猿问

PHP:异常vs错误?

PHP:异常vs错误?

也许我在PHP手册的某个地方遗漏了它,但是错误和异常之间究竟有什么区别?我能看到的唯一区别是错误和异常的处理方式不同。但是什么导致异常以及导致错误的原因是什么?



慕娘9325324
浏览 402回答 3
3回答

德玛西亚99

答案值得谈论房间里的大象错误是在运行时处理错误条件的旧方法。通常,代码会set_error_handler在执行某些代码之前调用类似的东西。遵循汇编语言中断的传统。以下是一些BASIC代码的外观。on error :divide_errorprint 1/0print "this won't print":divide_errorif errcode = X   print "divide by zero error"很难确保set_error_handler用正确的值调用它。更糟糕的是,可以调用一个单独的过程来改变错误处理程序。此外,很多次电话都穿插着set_error_handler电话和处理程序。代码很容易快速失控。异常处理通过形式化良好代码实际执行的语法和语义来解决问题。try {    print 1/0;    print "this won't print";} catch (DivideByZeroException $e) {    print "divide by zero error";}没有单独的功能或调用错误的错误处理程序的风险。现在代码保证在同一个地方。另外,我们得到更好的错误消息PHP曾经只有错误处理,当许多其他语言已经演变为更好的异常处理模型。最终,PHP的制造商实现了异常处理。但是可能支持旧代码,它们保持错误处理并提供了一种使错误处理看起来像异常处理的方法。除此之外,无法保证某些代码可能无法重置错误处理程序,这正是异常处理所要提供的。最后的答案在实现异常处理之前编码的错误可能仍然是错误。新错误可能是例外。但是没有设计或逻辑是错误,哪些是例外。它只是基于编码时可用的内容,以及程序员编码的偏好。
随时随地看视频慕课网APP
我要回答