throw关键字如何在C ++中抛出任何类型

我很好奇为什么throw关键字可以抛出任何类型,如何实现throw,请指教 双重除法(int a,int b) {

if (b == 0)
{
    //_Throw("Division by zero condition!")
    Throw_log::_throw(b);
    throw b;
    //throw "Division by zero condition!";
    //throw "Division by zero condition!";
    a= 20;
}
return (a / b);

}