异常和try、catch、finally的简记

一、异常的简记

  1)Java异常和错误的基类是Throwable(java.lang.Throwable),包括Exception(异常)和Error(错误)。
  2)try和catch不一定需要共存,try是尝试对其中代码捕获异常,catch是捕获异常并且可以处理异常。假如try中有异常抛出,则会去执行catch块,再去执行finally块;假如没有catch块,可以直接执行finally块,方法就以抛出异常的方式结束,而finally 后的内容也不会被执行,所以catch 和 finally 不能同时省略(分别可以单独存在)。
  3)throws和throw
    a)throws:写在方法声明之后,表示方法可能抛出异常,调用者需要处理这个异常。
    b)throw:写在方法体中,表示方法一定会抛出一个异常,要么try...catch处理,要么throws抛出。

二、关于try、catch、finally的补充

  关于try-catch里面有return的情况:当程序执行到try{}语句中的return方法时,它会将要返回的结果存储到一个临时栈中,然后程序不会立即返回,而是去执行finally{}中的程序,只要finally那里没有return返回值操作,他都不会去更新临时栈中的那个要返回的值,只是覆盖变量的值而已。执行完之后,就会通知主程序“finally的程序执行完毕,可以请求返回了”,这时,就会将临时栈中的值取出来返回。
  结论:任何执行try或者catch中的return语句之前,如果finally存在的话,都会先执行finally语句。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。

  try-catch-finally的情况分析:
    1)情况1:try{} catch(){}finally{} return;
      按顺序执行-end
    2)情况2:try{ return; }catch(){} finally{} return;
      程序执行try块中return之前的代码(包括return语句中的表达式运算)-->再执行finally块,最后执行try中return-->finally块之后的语句return,因为程序在try中已经return所以不再执行。
    3)情况3:try{ } catch(){return;} finally{} return;
      程序先执行try,如果遇到异常执行catch块-->有异常:则执行catch中return之前的代码(包括return语句中的表达式运算)-->再执行finally语句中全部代码--》最后执行catch块中return-->finally之后的代码不再执行-->无异常:执行完try再finally再return.
    4)情况4:try{ return; }catch(){} finally{return;}
      程序执行try块中return之前的代码(包括return语句中的表达式运算)-->再执行finally块,因为finally块中有return所以提前退出。
    5)情况5:try{} catch(){return;}finally{return;}
      程序执行catch块中return之前的代码(包括return语句中的表达式运算)-->再执行finally块,因为finally块中有return所以提前退出。
    6)try{ return;}catch(){return;} finally{return;}
      程序执行try块中return之前的代(包括return语句中的表达式运算)-->有异常:执行catch块中return之前的代(包括return语句中的表达式运算)-->则再执行finally块,因为finally块中有return所以提前退出-->无异常:则再执行finally块,因为finally块中有return所以提前退出。

原文地址:https://www.cnblogs.com/yangrongkuan/p/12008534.html

时间: 2024-10-13 13:01:34

异常和try、catch、finally的简记的相关文章

JAVA 处理程序异常,(try、catch、finally),(thorws)

一.try语句: try{//这里写可能出现异常的程序} catch(Exception e){//这里写如果出现异常怎么处理的程序} 二.throws语句 语法:函数方法()  throws Exception {} 三.try语句示例: import java.util.Scanner; public class Index{ public static void main(String[] args){ Scanner in = new Scanner(System.in); try{ S

T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)

原文:T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw) 本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出(try catch throw),本文简单介绍异常捕获与异常抛出在T-SQL编程中的实际使用 . 异常处理简单说明 异常捕获在应用程序编程中非常常见,提供了处理程序运行时出现的任何意外或异常情况的方法刚毕业的时候对于异常处理迷茫不解,

Java 异常之 try catch finally--除数不为0

1 package com.intel.aug6; 2 3 import java.util.InputMismatchException; 4 import java.util.Scanner; 5 6 public class TestException2 { 7 8 public int divsion(int f1, int f2) { 9 return f1 / f2; 10 } 11 12 /* 13 * 在java除法中,允许浮点数运算时除 数为零,所得结果是Infinity 14

java 19 -2 异常以及tr...catch()的方法处理异常

1 /* 2 异常:程序出现了不正常的情况. 3 4 举例:今天天气很好,班长出去旅游.骑着自行车,去山里面呼吸新鲜空气. 5 Error: 6 问题1:山路塌陷了,班长及时停住了,但是过不去了.严重的问题.(Error,编译处理不了的) 7 Exception: 8 问题2:班长出门推自行车,发现气没了,把气吹起来.出发前就应该检查的问题.(非RuntimeException的异常,必须处理) 9 问题3:班长骑着车在山路上惬意的行驶着,山路两边是有小石子的,中间是平坦的水泥路.(Runtim

swift 异常捕获try catch的使用

新的异常捕获机制更新于 WWDC 2015上发布的新的Swift2.0,异常的try-catch机制有助于我们更快的定位出错原因所在,此处简单说明下try-catch机制的用法. 1.定义枚举异常值 首先我们可以创建自己的异常枚举值,这要实现ErrorType协议,只不过这个协议是空的,我们加上就好. 2.抛出异常 我们可以在方法中抛出异常,定义抛出异常的方法很简单,只需要在返回值的 -> 前面加上throws就好了,示例如下:(这个方法是自定义的Dog类里的一个实例方法,name.length

SQLServer异常捕获(Try Catch)

/* SQLServer异常捕获 在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常处理,通过日志表来记录存储过程的执行情况,然而定位到错误的存储过程,以下是一个存储过程异常处理的小实例: */ /*===================================================== 相关错误消 息如下: ERROR_NUMB

Sql Server异常捕获 try catch

declare @num int begin try set @num=1/0 end try begin catch select ERROR_LINE() as 错误行数, ERROR_MESSAGE() as 错误消息 end catch 运行截图:

js中的异常捕获 try{} catch{}(二)

事件轮循中,抛出的异常信息会丢失函数调用的路径,所以每一步都要进行错误处理 function a(){ b(); } function b(){ c(); } function c(){ // setTimeout(() => { // throw new Error('here'); // }, 1000); throw new Error('here'); } //调用a方法 a(); 异步函数抛出错误信息显示: 同步方法抛出错误信息显示: 原文地址:https://www.cnblogs.

C#基础知识点之try catch 异常捕获机制

一.C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异常. catch 以控制权更大的方式处理错误,可以有多个catch子句. finally 无论是否引发了异常,finally的代码块都将被执行. throw 用于引发异常,可引发预定义异常和自定义异常. 二.C#异常处理的格式 try { 程序代码块: } catch(Exception e) { 异常处理代码块: } finally { 无论是否发生异常,均要执行的代码块: } 三.异常处理实战 一个除数和零的简