throw Exception();
抛出的内容实际上不是prvalue表达式Exception()创建的临时对象.从概念上讲,有一个单独的对象 – 异常对象 – 从该临时对象初始化,它是实际抛出的异常对象. (但编译器可以忽略复制/移动.)
其次,语言规则说异常对象总是被认为是左值.因此,允许绑定到非const左值引用.