首页 > 其他分享 >异常

异常

时间:2023-01-16 20:44:44浏览次数:40  
标签:预见 try 程序员 JVM catch 异常

异常

image-20230116171511632

image-20230116171627231

分类

  • 检查性异常、运行时异常、错误ERROR:

    1. 检查性异常:

      用户错误或问题引起的异常,程序员无法预见;

      在编译时不能被忽略;

      例如:打开一个不存在的文件

    2. 运行时异常:

      可被程序员预见,并避免;

      在编译时可被忽略;

    3. 错误ERROR:

      不是异常,是脱离程序员控制的问题;

      在编译时也检查不到;

      例如:栈溢出

  • Error 和 Exception:

    1. Error:无法预见;

    2. Exception:可以预见;

  • 异常处理框架

image-20230116174356519

Error

  • 对象由 Java虚拟机 生成 并 抛出;

  • 与程序员无关;

  • OutOfMemoryError 发生时,JVM 会选择线程终止;

  • JVM试图执行应用时,类定义错误(NoClassDefFoundError)、链接错误(LinkageError),这些错误不可查,因为它们在应用程序的控制和处理能力之外。

  • 致命性,程序无法控制和处理,JVM终止线程;

Exception

  • 运行时异常(不可预见) 与 非运行时异常(可预见)

  • 检查性异常(可预见) 与 非检查性异常(不可预见)

  • 可被程序处理,且应尽可能处理;

image-20230116192142972

关键字

  • try、catch、finally、throw、throws

  • finally:释放资源

  • 运行时异常不需要程序员主动抛出异常,JVM会自动抛出异常,但若不用 “try catch” 捕获,则程序遇到这个异常会停止运行,用 “try catch” 捕获,程序不会停止,会依旧正常继续往下执行。

image-20230116193523788

image-20230116193819447

image-20230116194618831

image-20230116194654671

image-20230116194857577

自定义异常

image-20230116202141600

image-20230116202325922

image-20230116202514267

image-20230116203039197

经验总结

  • 运行时异常:合理规避 + “try catch”处理;

  • 多重catch块:catch(Exception)处理可能被遗漏的异常;

  • 不确定代码:“try catch” 处理潜在异常;

  • 尽量处理异常,比如补偿机制、重试机制,切忌简单调用printStackTrace()打印输出;

  •  

标签:预见,try,程序员,JVM,catch,异常
From: https://www.cnblogs.com/sunfy/p/17056270.html

相关文章