异常处理try-catch-finally笔记

当程序发生异常时,我们期望:返回到一种安全状态,并能够让用户执行一些其他的命令;或者 允许用户保存所有操作的结果,并以适当的方式终止程序。

异常处理机制:程序的执行过程中如果出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统,这个过程成为抛出(throw)异常。当Java运行时系统接收到异常对象时会寻找处理这一异常的代码,并把当前异常对象交给它处理,这一过程称为捕获(catch)异常。如果java运行时系统未能找到可以捕获异常的方法,则运行时系统将会终止,相应的程序也将退出。

所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Exception。

Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。

Exception层次结构。这个层次结构又分解为两个分支:一个分支派生于RuntimeException;另一个分支包含其他异常。划分两个分支的规则是:由程序错误导致的异常属于RuntimeException;而程序本身没有问题,但由于像I/O错误这类问题导致的异常属于其他异常。

派生于RuntimeException的异常包含下面几种情况:

  • 错误的类型转换。

  • 数组访问越界。

  • 访问空指针。

不是派生于RuntimeException的异常包括

  • 试图在文件尾部后面读取数据。

  • 试图打开一个错误格式的URL。

  • 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。

“如果出现RuntimeException异常,那么就一定是你的问题”

细节:

1、如果try中语句正确,将不会执行catch中的语句;如果try语句中发生异常,try中该语句后的语句将不会继续执行,而是立即返回一个异常对象与catch中的异常对象进行匹配,如果匹配成功,将从catch后面就继续执行(也就是说try中后面的语句不会被执行了);

2、可以写多个catch语句,注意他们的先后顺序,子类必须在父类之前,否则父类型一定先于子类型被匹配,所有子类型就没有机会执行了。JAVA编译出错。

3、finally语句块是必须被执行的(因为finally子句的这个特性,所以一般将释放资源,关闭连接的语句写在里面)。

4、如果try{}中有个return语句,那么finally中的代码是否被执行呢?答案是执行的,而且在return前执行。

int f(int n)
{
  try{
    return n*n;//由于先执行finally语句且函数被返回,此语句将不被执行了,如果finally中没有return语句,将在执行finally后执行它。
  }catch(Exception e){

  } finally {
    System.out.println("return who");
    return n;
  }
}

时间: 2024-10-18 15:25:26

异常处理try-catch-finally笔记的相关文章

异常处理 try...catch...finally 执行顺序, 以及对返回值得影响

异常处理 try...catch...finally 执行顺序, 以及对返回值得影响 1.不管有没有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的,所以函数返回值是根据返回类型在finally执行前后确定的:4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值. (一)   一般情况下,程序执行到try里面的内容一定会

C++异常处理 - try,catch,throw,finally的用法

写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使用过异常,但是你习惯使用异常了吗? 现在很多软件都是n*365*24小时运行,软件的健壮性至关重要. 内容导读 本文包括2个大的异常实现概念:C++的标准异常和SHE异常. C++标准异常: 也许你很高兴看到错误之后的Heap/Stack中对象被释放,可是如果没有呢? 又或者试想一下一个能解决的错误

C#异常处理“try catch”与vb ”on error goto“

C#跟其他语言一样,在编写代 码的过程中都会或多或少的出现语法或者逻辑上的错误,如果盲目相信自己的技术只能让这些异常的程序继续存在,最终导致系统无法正常运行甚至瘫痪.技术上要 保证代码不出错的同时我们也要给自己留有余地,一般的编程语言都会有异常处理机制,熟练掌握对异常的处理,也是保证我们程序可靠性的前提. 根据前面学习过的vb6.0,的异常处理,在学习c#,的异常处理就很同意理解,原理上都是一样的,只是语法略有区别.vb中我们用的是on error 语句,c#中刚学习了try  catch,这两

C# 异常处理(Catch Throw)IL分析

1.catch throw的几种形式及性能影响: private void Form1_Click(object sender, EventArgs e) { try { } catch { throw; } } private void Form1_Load(object sender, EventArgs e) { try { } catch (Exception) { throw; } } private void Form1_Enter(object sender, EventArgs

Java中的异常处理try catch(第八周课堂示例总结)

异常处理 使用Java异常处理机制: 把可能会发生错误的代码放进try语句块中. 当程序检测到出现了一个错误时会抛出一个异常对象. 异常处理代码会捕获并处理这个错误. catch语句块中的代码用于处理错误. 当异常发生时,程序控制流程由try语句块跳转到catch语句块. 不管是否有异常发生,finally语句块中的语句始终保证被执行. 如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序. 异常分类: Throwable类有两个直接子类: Exception:出现的问题是可以被捕获的:

异常处理try...catch...catch

package com.day16.Exception; public class ExceptionTwo { public static void main(String[] args) { int a=10; int b=0; int[] arr= {1,2,3,4,5}; try { System.out.println(a/b); System.out.println(arr[10]); } catch (ArithmeticException e) { System.out.prin

【Java】异常处理_学习笔记

异常: 1.格式1: try { //业务代码 } catch(Exception e) { //异常处理代码 } 说明: a.   异常抛出:执行try里的代码,系统会自动生成一个异常对象,该对象会被提交给Java运行环境的过程. b.   异常捕获:Java运行环境将接收到的异常对象与catch块匹配的过程. c.   找不到匹配catch块,程序终止. 2.格式2: try { //业务代码 } catch(Exception1 e1) { //异常处理代码 } catch(Excepti

《C++Primer》读书笔记--异常处理

定义: 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题. 之前写的一些小程序,几乎没有用到过异常处理.因为规模比较小,一般的问题在函数内就加上一些判断条件解决了,一般的做法就是返回一个表示错误的值(比如返回NULL指针),在调用的时候判断一下返回的值,虽然简单,但是功能并不强大,只适合小型项目.而大型的项目,如果这么搞就乱套了,所以就要用到异常处理这一套系统. 一个最简单的异常处理: // ConsoleApplication3.cpp :

Java读书笔记一(异常处理)

1.介绍 在开发过程中,都会遇到程序运行时的异常,例如逻辑错误.硬件故障等,本篇博客将会详细的介绍一下Java中的异常处理机制. 2.Try和Catch捕获异常 我们在处理异常过程中经常用到的就是Try和Catch语句了.try语句块能够指出可能出现的异常,随后通过一个或者多个Catch语句块来捕获. 2.1.简单的Try和Catch语法 package com.RuntimeException; public class Sample11_1 { public static void main

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编程中的实际使用 . 异常处理简单说明 异常捕获在应用程序编程中非常常见,提供了处理程序运行时出现的任何意外或异常情况的方法刚毕业的时候对于异常处理迷茫不解,