黑马程序员技术交流社区
标题:
java中是怎么处理异常的?
[打印本页]
作者:
☆义薄バ云天☆
时间:
2014-3-19 10:20
标题:
java中是怎么处理异常的?
我是刚刚学的,要解释详细点哦。
作者:
sgs_gzy
时间:
2014-3-19 10:28
异常:就是程序在运行时出现不正常情况。
异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。
其实就是java对不正常情况进行描述后的对象体现。
对于问题的划分:两种:一种是严重的问题,一种是非常严重的问题。
对于严重的,java通过Error类进行描述。
对于Error一般不编写针对性的代码对其进行处理。
对于非严重的,java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
无论Error或者Exception都具有一些共性内容。
比如:不正常情况的信息,引发原因等。
Throwable
|--Error
|--Exception
2,异常的处理
java提供了特有的语句进行处理。
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
3,对捕获到的异常对象进行常见方法操作。
String getMessage():获取异常信息。
作者:
chen20134
时间:
2014-3-19 10:34
Java中,异常定义了程序运行中可能遇到的轻微错误或异常情况。当发生异常时,程序员可以通过自己编写有针对性的代码来对它进行处理,以让程序继续运行下去。为了让写出来的代码比较强壮(robust),java语言要求除Error和RuntimeException之外的所有Exception都能够得到处理。
Java对异常(Exception)的处理方法分为两类,一类将异常的处理递交给当前方法的调用者去处理,称为throws a Exception,另一类则在方法中使用try/catch/finally语句自己处理异常。
1.Java 语言采用了C++风格的异常处理。
当程序中出错时,发生错误的那个方法中产生的异常没有相应的try/catch 段来处理时,它就会被掷给(throw)产生该异常的方法,如果该方法也未能处理它,异常就会被掷给该方法的调用者。这个过程一直进行, 直到异常被处理为止。当返回到main()方法时异常还未被处理,或者main()方法中也未对它进行处理,则该异常就会让程序异常终止。
2.使用try/catch/finally段来处理exception
1. 将可能会产生异常的程序包含在try段中。
2.
3. try {
4. // code that might throw a particular exception
5. }
6. 使用一个或多个catch段来处理try段中可能产生的异常。
7. try {
8. //code that might throw a particular exception
9. }
10.
11. catch (ExceptionType1 e1){ …
12. // 当try段中产生类型为ExceptionType1的异常时执行该段
13. // e1代表该异常类(ExceptionType1)对应的实例(对象),由系统自动生成
14.
15. }catch (ExceptionType2 e2) { …
16. // 当try段中产生类型为ExceptionType2的异常时执行该段
17. }
当发生的异常类型与某一catch段中的异常类型一致或相匹配时,该catch段中的代码就会被执行。在一个try段后可以有多个catch段,每个catch段可以对应一种异常的处理。
Java的异常处理机制带来的好处是将异常处理与正常的程序流分开,即将出错处理代码与正常的代码相隔离。这样产生的代码可读性好,易于管理。
作者:
方青木
时间:
2014-3-19 11:43
异常:是对问题的描述,将问题进行对象的封装。
异常体系:
Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点:
异常体系的所有类以及建立的对象都具备可抛性,即可以被关键字throw和throws所操作。
throw和throws:
throw定义在函数内用于抛出异常对象。throws定义在函数上用于抛出异常类,可以跟多个,用逗号隔开。
注:当在函数内部出现throw抛出的异常时,就必须给以相应的处理动作。
要么在函数内部try catch处理,要么在函数上声明throws抛出。
但是:当throws抛出的是RuntimeException时,可以不处理。
异常处理的原则:
1、处理方式有两种:try或者throws
2、到用到抛出异常的功能是,抛出几个就处理几个,所以一个try有可能对应catch
3、多个catch存在时,父类的catch放到最下面
4、当捕获到异常,但本功能处理不了是可以在catch中继续抛出。当该异常不属于该功能出现的异常时,可以将异常转换为本功能相关的异常再抛出。
异常处理语句:
try
{需要被检测的代码。}
catch(异常类 变量)
{处理异常的代码。}
finally
{一定会被执行的代码。}
异常处理语句的组合方式:
1、try catch组合
2、try finally组合
3、try catch finally组合
注:当代码存在安全隐患或者调用的函数有抛出异常时,可以用try去检测异常。
catch可以接收try检测到的异常,并对异常处理或者继续抛出。
finally内是一定会被执行的语句,用于释放资源等情况。有一种情况finally不会被执行到,当jvm执行到System.exit(0)时。
自定义异常:
定义类继承Exception或者RuntimeException
1、让该自定义类具备可抛性
2、让该类具备操作异常的共性方法
当要定义自定义异常的信息时,可以使用父类已定义好的功能,将子类异常信息传递给父类的构造函数
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
子父类覆盖时发生异常:
1、子类只能抛出父类的异常的子类或者子集
2、当父类或者接口没有异常抛出是,子类在覆盖时发生异常,只能try不能throws.
作者:
S灬马到成功
时间:
2014-3-19 12:01
对于有可能抛出异常的代码段放在try{}语句块中并在catch(Exception e){}捕获抛出的异常,然后根据捕获的异常进行处理
作者:
刘先斌
时间:
2014-3-19 12:56
异常:是对问题的描述,将问题进行对象的封装。
异常体系:
Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点:
异常体系的所有类以及建立的对象都具备可抛性,即可以被关键字throw和throws所操作。
throw和throws:
throw定义在函数内用于抛出异常对象。throws定义在函数上用于抛出异常类,可以跟多个,用逗号隔开。
注:当在函数内部出现throw抛出的异常时,就必须给以相应的处理动作。
要么在函数内部try catch处理,要么在函数上声明throws抛出。
但是:当throws抛出的是RuntimeException时,可以不处理。
异常处理的原则:
1、处理方式有两种:try或者throws
2、到用到抛出异常的功能是,抛出几个就处理几个,所以一个try有可能对应catch
3、多个catch存在时,父类的catch放到最下面
4、当捕获到异常,但本功能处理不了是可以在catch中继续抛出。当该异常不属于该功能出现的异常时,可以将异常转换为本功能相关的异常再抛出。
异常处理语句:
try
{需要被检测的代码。}
catch(异常类 变量)
{处理异常的代码。}
finally
{一定会被执行的代码。}
异常处理语句的组合方式:
1、try catch组合
2、try finally组合
3、try catch finally组合
注:当代码存在安全隐患或者调用的函数有抛出异常时,可以用try去检测异常。
catch可以接收try检测到的异常,并对异常处理或者继续抛出。
finally内是一定会被执行的语句,用于释放资源等情况。有一种情况finally不会被执行到,当jvm执行到System.exit(0)时。
自定义异常:
定义类继承Exception或者RuntimeException
1、让该自定义类具备可抛性
2、让该类具备操作异常的共性方法
当要定义自定义异常的信息时,可以使用父类已定义好的功能,将子类异常信息传递给父类的构造函数
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
子父类覆盖时发生异常:
1、子类只能抛出父类的异常的子类或者子集
2、当父类或者接口没有异常抛出是,子类在覆盖时发生异常,只能try不能throws.
毕老师Java基础视频中有解答!:)
作者:
郭黎明
时间:
2014-3-19 13:11
java中将各种异常封装成了不同对象进行描述,具体的请看毕老师讲的
暴风截图20143165115366.jpg
(185.43 KB, 下载次数: 6)
下载附件
2014-3-19 13:11 上传
作者:
我爱的是你爱我_
时间:
2014-3-19 14:51
try{}用来定义需要被检测的代码,catch(){}用来处理异常的代码,
finally{}中是一定会执行的代码
注意:
1,finally中定义的通常是 关闭资源代码。因为资源必须释放。
2,finally只有一种情况不会执行。当执行到System.exit(0);finally不会执行。
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开
当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
注意:RuntimeException除外。也就说,函数内如果抛出的RuntimeException异常,函数上可以不用声明。
这些毕老师视频都有讲到啊,day10里面有很详细解释!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2