在没有异常处理的程序中如果要回避异常,需要使用大量的判断语句,配合所想到的错误状况来捕捉程序中可能发生的错误。但是这样势必会导致程序运行效率降低。
java异常处理机制具有易于使用,可自定义异常类,处理抛出的异常的同时,又不会降低程序运行效率等优点。因而在java程序设计时,应充分的利用异常处理机会,以增进程序的稳定性及效率。
1.异常处理示例及基本格式:

package javaBasics;

public class test5 {

    public static void main(String[] args) {
int i = 10;
int j = 0;
try{
int temp = i/j; //此处会产生异常
System.out.println("计算结果:"+temp);
}catch(Exception e){
System.out.println("出现异常:"+e); //打印异常信息
e.printStackTrace(); //打印完整的异常信息
}finally{
System.out.println("不管是否出现异常都执行此代码");
}
System.out.println("计算结束");
} }

程序的运行结果wei:

出现异常:java.lang.ArithmeticException: / by zero
不管是否出现异常都执行此代码
计算结束

2.Exception和error

共同点:
Exception和error是java异常结构中最常用的两个类,统称为异常。它们都是throwable的子类
不同点:
Exception表示程序中遇到的异常,可以用try catch进行捕获
error一般指jvm错误,程序中无法捕获

(拓展:Throwable是Exception的父类,可不可以直接使用Throwable呢?

首先,使用Throwable捕获异常,在代码中是没有任何问题的,但在开发中一般不会使用Throwable处理,因为其有Exception和error两个子类,Error本身不需要程序处理,而程序中需要处理的是Exception 所以没有必要使用Throeable)

3.Throw和Throws关键字

Throws:在定义一个方法时,使用Throws关键字声明,表示此方法不处理异常,而是交给调用方法来处理

(注意:不要在main方法中使用throws,main方法为一切方法的起点,一切的操作也是由主方法开始的,所以,如果在主方法中使用throws,则程序出现问题后肯定交由jvm处理,将会导致程序中断。)

Throw:Throw关键字是人为的抛出异常,直接抛出异常的实例化对象。

package javaBasics;

public class test5 {

	public static void main(String[] args) {
try{
throw new Exception("自己抛出异常"); //抛出异常的实例化对象
}catch(Exception e){
e.printStackTrace(); //捕获异常
}
} }

  Throw和Throws结合应用范例:

以下代码也是开发中使用较多的处理方式

package javaBasics;

public class Math {
public int div(int i,int j) throws Exception{
int temp = 0;
try{
temp = i/j;
}catch(Exception e){ //捕获异常
throw e; //把异常交给被调用处处理
}finally{
System.out.println("计算结束");
}
return temp;
}
} package javaBasics; public class test5 { public static void main(String[] args) {
Math math = new Math();
try {
System.out.println(math.div(10, 0));
} catch (Exception e) { //进行异常捕获
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

  程序执行结果:

计算结束
java.lang.ArithmeticException: / by zero
at javaBasics.Math.div(Math.java:7)
at javaBasics.test5.main(test5.java:8)

4.自定义异常类:

package javaBasics;

public class MyException extends Exception{		//自定义异常类继承Exception类
public MyException(String msg){ //构造方法接受异常信息
super(msg); //调用父类中的构造方法
} } package javaBasics; public class test5 { public static void main(String[] args) {
try{
throw new MyException("自定义异常信息");//抛出异常
}catch(Exception e){ //异常捕获处理
e.printStackTrace();
}
} }

  

执行结果:

javaBasics.MyException: 自定义异常信息
at javaBasics.test5.main(test5.java:7)

5.Exception和runtimeException

如下示例:

package javaBasics;

public class test5 {

	public static void main(String[] args) {
String str="123a";
int temp = Integer.parseInt(str); //将字符串转换成int类型
System.out.println(temp*temp);
} } 执行结果:
Exception in thread "main" java.lang.NumberFormatException: For input string: "123a"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at javaBasics.test5.main(test5.java:7)

  执行报NumberFormatException  显然,程序已经中断,查看Integer类的parseInt方法源码可以看出throws抛出了NumberFormatException 给方法调用处处理。

public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}

NumberFormatException 是runtimeException类的子类

可以得出:

Exception在程序中必须使用try。。。catch处理。

RuntimeException可以不用try。。。catch处理,产生异常后直接交给JVM处理。(在开发中最好使用try。。。catch进行处理)

java 异常的捕获及处理的更多相关文章

  1. JAVA异常的捕获与抛出原则

    在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...

  2. 【开发技术】java异常的捕获与抛出原则

    在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...

  3. Java -- 异常的捕获及处理 -- 目录

    7 异常的捕获及处理 7.1 异常的基本概念 7.1.1 为什么需要异常处理 7.1.2 在程序中使用异常处理 7.1.3 异常类的继承结构 7.1.4 Java的异常处理机制 7.2 throws与 ...

  4. 菜鸡的Java笔记 第三十 - java 异常的捕获及处理

    异常的捕获及处理        1.异常的产生分析以及所带来的影响        2.异常的处理的基本格式        3.异常的处理流程        4.异常的处理模式        5.自定义 ...

  5. Java -- 异常的捕获及处理 -- Java的异常处理机制

    7.1.4 Java的异常处理机制 在整个Java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下: ⑴ : 一旦产生异常,则首先会产生一个异常类的实例化对象. ⑵ : 在try语句 ...

  6. java 异常与捕获

    几乎所有的代码里面都会出现异常,为了保证程序在出现异常之后可以正常执行完毕,就需要进行异常处理. 先来看一下异常的继承类结构: 所有的异常都是由Throwable继承而来,我们来看他下面的两个子类Er ...

  7. Java异常的捕获与处理

    Java提供了try(尝试).catch(捕捉).finally(最终)这三个关键字来处理异常.在处理各种异常时,需要用到对应的异常类,指的是由程序抛出的对象所属的类. 一.异常处理的使用 由于fin ...

  8. Java 异常的捕获与处理详解 (一)

    一,异常的产生(Exception) 异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就会中断执行. An exception is a flow of inst ...

  9. Java异常01——捕获和抛出异常

    捕获和抛出异常 异常处理五个关键字 try , catch , finally , throw , throws try catch finally(快捷键:选中要要监控的代码语句 快捷键: ctrl ...

随机推荐

  1. JavaScript里的依赖注入

    JavaScript里的依赖注入 我喜欢引用这句话,“程序是对复杂性的管理”.计算机世界是一个巨大的抽象建筑群.我们简单的包装一些东西然后发布新工具,周而复始.现在思考下,你所使用的语言包括的一些内建 ...

  2. [Usaco2007 Jan]Telephone Lines架设电话线[二分答案+最短路思想]

    Description Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N ...

  3. Quartz表达式生成器

    Java版的Quartz表达式生成器,同时适用于Quartz.net(免费下载) Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2 ...

  4. jQuery跳房子插件hopscotch

    插件描述 跳房子是一个框架,使开发人员可以轻松预览产品并添加到他们的网页 跳房子接受JSON对象作为输入,并提供开发人员来控制渲染巡演显示和管理的游览进度的API. 使用步骤 要使用跳房子框架上手,只 ...

  5. Lazy<T>

    Lazy<T> 对象的创建方式,始终代表了软件工业的生产力方向,代表了先进软件技术发展的方向,也代表了广大程序开发者的集体智慧.以new的方式创建,通过工厂方法,利用IoC容器,都以不同的 ...

  6. T-SQL查询语句(三):多表查询

    SQL查询语句<三>:多表查询 (也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个 ...

  7. 通过NSURL获取网络标准时间

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  8. 绩效考核指标KPI 听课笔记

    以前一直听人在说KPI,今天终于明白KPI是什么意思了!

  9. autotools入门笔记(二)——创建和使用静态库、动态库

    带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...

  10. C语言实现修改文本文件中的特定行

         最近由于项目需要实现修改文件的功能,所以,博主认真查阅了一些资料,但是,很遗憾,并没有太多的收获. 好的,首先我先叙述下功能要求: 其实很简单,就是Shell中sed命令的C语言实现,实现定 ...