2345网址导航手机哈尔滨网站优化指导
2345网址导航手机,哈尔滨网站优化指导,商洛市住户和城乡建设局网站信息价,找设计公司上哪个网站异常一、概念异常的结构体系二、异常的分类Error和Exception的区别RuntimeException和CheckedException1. CheckedException#xff08;受检异常/编译时异常#xff09;2. RuntimeException#xff08;运行时异常/非受检异常#xff09;三、异常的处理方式1. throw、throws…异常一、概念异常的结构体系二、异常的分类Error和Exception的区别RuntimeException和CheckedException1. CheckedException受检异常/编译时异常2. RuntimeException运行时异常/非受检异常三、异常的处理方式1. throw、throwsthrows声明异常throw手动抛出异常2. try-catch捕获异常finally注意四、Throw和throws的区别1. 位置不同2. 功能不同一、概念如果某个方法不能按照正常的途径完成任务就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时这个方法会立刻退出同时不返回任何值。另外调用这个方法的其他代码也无法继续执行异常处理机制会将代码执行交给异常处理器。简单来说就是为了当程序发生异常时可以按照代码预先设定好的异常逻辑来针对性地处理异常让程序尽大可能的恢复正常并继续执行且保持代码的清晰异常的结构体系二、异常的分类Error和Exception的区别Exception 和 Error 都是 Throwable 类的直接子类只有继承了 Throwable 的对象才能被 throw 和catch。核心区别:Exception 代表程序运行过程中可以预料、可以恢复的异常情况属于业务逻辑范畴能够被合理处理Error 指的是Jvm⽆法解决的严重问题应用程序不会抛出该类对象,⽐如JVM的内部错误、资源耗尽等典型代表StackOverflowError和OutOfMemoryError⼀旦发⽣回⼒乏术简单来说Exception是可以处理的程序异常Error是系统级不可恢复错误RuntimeException和CheckedExceptionException又 有 两 个 分 支 一个是运行时异常RuntimeException一 个是编译时异常CheckedException1. CheckedException受检异常/编译时异常定义编译期就必须处理的异常否则代码无法运行特点程序可预见、可处理不是代码逻辑错误举例IOException文件异常、SQLException数据库异常、ClassNotFoundException处理必须try-catch或throws抛出2. RuntimeException运行时异常/非受检异常定义运行时才抛出编译期不强制处理特点代码逻辑错误导致修复代码即可避免举例NullPointerException空指针、IndexOutOfBoundsException越界、ArithmeticException算术异常处理不强制处理优先改代码而非捕获异常一句话总结CheckedException外部问题编译强制处理RuntimeException代码BUG运行才报错不用强制捕获三、异常的处理方式1. throw、throwsthrows声明异常作用甩锅告诉调用者 “我这里可能出异常你来处理”位置写在方法声明上特点不处理异常只是声明语法publicvoid方法名()throws异常1,异常2{// 代码}throw手动抛出异常作用主动制造一个异常位置写在方法内部特点手动触发异常常和条件判断一起用语法if(条件){thrownew异常(异常提示);}简单来说throw、throws都是遇到问题不进行具体处理而是继续抛给调用者不进行处理就会报错程序停止2. try-catch捕获异常作用自己处理异常不让程序崩溃位置写在方法内部特点真正处理异常的代码语法try{// 可能出错的代码}catch(异常类型 e){// 处理异常}简单来说try 里的代码正常运行 → 不进 catchtry 里一报错 → 立刻跳到 catchcatch 抓住后 → 程序继续往下跑不会停finally不论程序是否发⽣异常都需要执⾏,因为异常会引发程序的跳转可能导致有些语句执⾏不到finally就是⽤来解决这个问题的语法try{// 可能报错的代码}catch(异常 e){// 报错了才执行}finally{// 不管报不报错100% 必执行}注意return 不会立刻结束方法执行顺序永远是try 里的代码 → finally 代码 → 最后 return所以如果说finally里面有return那么就会执⾏finally中的return,从⽽不会执⾏到try中原有的returnpublicstaticinttest(){try{return10;}finally{// finally 里写 returnreturn100;}}结果100四、Throw和throws的区别1. 位置不同Throw和throws的区别throws 用在函数上后面跟的是异常类可以跟多个而throw用在函数内后面跟的是异常对象。2. 功能不同throws 用来声明异常让调用者只知道该功能可能出现的问题可以给出预先的处理方式throw抛出具体的问题对象执行到throw功能就已经结束了跳转到调用者并将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时下面不要定义其他语句因为执行不到。throws 表示出现异常的一种可能性并不一定会发生这些异常throw 则是抛出了异常执行throw则一定抛出了某种异常对象。两者都是消极处理异常的方式只是抛出或者可能抛出异常但是不会由函数去处理异常真正的处理异常由函数的上层调用处理。