目录

一、异常的概念

二、异常的分类

三、异常的捕获和处理

四、使用自定义异常

一、异常的概念

java异常是指java提供的用于处理程序运行过程中错误的一种机制

所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,索要读取的文件不存在等)

设计良好的程序应该在异常发生时提供处理这些错误的方法,是的程序不会因为异常的发生而阻断或产生不可预见的结果

java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被其提交给java运行系统,这个过程成为抛出(throw)异常

当java运行时系统接受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程成为捕获(catch)异常

//一个捕获异常的示例
public class test {
public static void main(String args[]) {
try {
System.out.println(2/0);
} catch (ArithmeticException ae) {
System.out.print("运行出错!");
}
}
}

二、异常的分类

Throwable:可被抛出的

Error:系统错误,做自己处理不了的

Exception:自己可以做处理的,可以catch的

RuntimeExpetion:经常出的错误(这种错误可以catch,也可以不catch)

还有一种exception是必需要去捕获的

三、异常的捕获和处理

try {
//可能抛出异常的语句
} catch ( SomeException1 e ) {
......
} catch ( SomeException2 e) {
......
} finally {
......
}
  • try代码段包含可能产生异常的代码
  • try代码段后根由一个或多个catch代码段
  • 每个catch代码段声明其能处理的一种特定类型的异常并提供处理的方法
  • 当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段
  • finally段的代码无论是否发生异常都会在最后进行执行

try{

  • try语句指定了一段代码,该段代码就是一次捕获并处理例外的范围。
  • 在执行过程中该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理
  • 如果没有例外产生,所有的catch代码段都被略过不执行

} catch ( ) {

  • 在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象
  • 在catch中声明的异常对象(catch(someException e))封装了异常时间发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。
  • 例如:getMessage()方法:用来得到有关异常事件的信息。printStackTrace()方法:用来跟踪异常事件发生时执行堆栈的内容。

}  finally (){

  • finally语句为异常处理提供一个统一的出口,是的在控制流程转到程序的其他部分以前,能够对程序的状态做统一的管理
  • 无论try所指定的程序块中是否抛出例外,finally所指定的黛娜都要被执行。
  • 通常在finally语句中可以进行资源的清除工作,如:关闭打开的文件,删除临时文件等

}

对于一些自己处理不了的异常或是自己不想去处理的异常,可以直接往外抛异常,这样就可以不用在代码段中加try{}catch{}

//一个抛出异常的例子
public class test {
public static void main(String args[]) throws IOException {
test();
} static void test() throws IOException {
System.out.println(2/0);
}
}
//不加try...catch的另外一种抛异常方法
public class test {
public static void main(String args[]) throws IOException {
int i = 0;
if (i == 0) {
throw new IOException("出错了");
}
}
}

看一个例子,这就是打印的堆栈信息,虽然报错很多行,但是或许只要更改一次就可以解决:

另外在捕获异常的时候注意下面这种问题:

四、使用自定义异常

使用自定义异常一般有如下步骤:

1.通过继承java.lang.Exception类声明自己的异常类

2.在方法适当的位置生成自定义异常的实例,并用throw语句抛出

3.在方法的声明部分用throws语句声明该方法可能抛出的异常

//创建一个exception类存放自己的exception
public class MyExpection extends Exception {
private int id;
public MyExpection (String message,int id) {
super(message);
this.id = id;
}
public int getId() {
return id;
}
}
//测试类
public class Test {
//定义一个方法
public void regist(int num) throws MyExpection {
if(num < 0) {
throw new MyExpection("不应该为负值", 3);
}
System.out.println("登记人数: "+ num);
}
//定义另一个方法
public void manager() {
try {
regist(100);
} catch (MyExpection e) {
System.out.println("登记失败,出错类型码="+e.getId());
e.printStackTrace();
}
System.out.println("操作结束!");
}
//程序入口main方法
public static void main(String[] args) {
Test t = new Test();
t.manager();
}
}

可以自己调试输出

注意:

当原方法有异常时重写该方法需要抛出与原方法所抛出异常类型一致的异常或不抛出异常,其他情况都无法进行重写

六、java异常处理的更多相关文章

  1. java异常处理机制

    本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则.并且作者提出了自己处理一个大型应用系统 ...

  2. Java 异常处理机制和集合框架

    一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...

  3. java异常处理机制 (转载)

    java异常处理机制 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C ...

  4. Java—异常处理总结

    异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出 ...

  5. 如何正确使用Java异常处理机制

    文章来源:leaforbook - 如何正确使用Java异常处理机制作者:士别三日 第一节 异常处理概述 第二节 Java异常处理类 2.1 Throwable 2.1.1 Throwable有五种构 ...

  6. [ Java学习基础 ] Java异常处理

    一.异常概述 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用Sys ...

  7. Java异常处理机制难点解惑-用代码说话

    是否需要看这篇文章? 下面的例子中,如果正常执行返回值多少? 如果出现了ArithmeticException返回值多少? 如果出现非ArithmeticException(如NullPointerE ...

  8. Java 异常处理的误区和经验总结

    Java 异常处理的误区和经验总结   1 本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员 ...

  9. 基础知识《十一》Java异常处理总结

    Java异常处理总结           异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制 ...

  10. 深入探索 高效的Java异常处理框架

    转载自:http://www.sunwei.org/archives/196 摘要:本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Sprin ...

随机推荐

  1. scrum立会报告+燃尽图(第二周第二次)

    此作业要求参考: https://edu.cnblogs.com/campus/nenu/2018fall/homework/2247 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公 ...

  2. Scrum Meeting 11.07

    成员 今日任务 明日计划 用时 徐越       赵庶宏       薄霖       卞忠昊 JOSN数据解析 WebView和JavaScript交互基础  3h  武鑫 设计界面:独立完成一些简 ...

  3. 2-Sixth Scrum Meeting20151206

    任务分配 闫昊: 今日完成:请假.(最近代码写得多……很累……) 明日任务:完成数据库设计. 唐彬: 今日完成:ios客户端代码的深度学习. 明日任务:读IOS讨论区后台接口. 史烨轩: 今日完成:请 ...

  4. Linux基础入门--04

    目录结构及文件基本操作 实验介绍: 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录结构之 ...

  5. 四则运算《《《《SQL出题

    设计思路: 这次要用数据库存储题目,我想到的是用SQL server数据库,用dataGridView控件读取数据. 具体实现: DBCon.cs 1 using System; 2 using Sy ...

  6. ubuntu16.04+matlab r2015b VideoReader报错

    读取.mp4出错 需要安装gstreamer0.10-ffmpeg ` sudo add-apt-repository ppa:mc3man/gstffmpeg-keep sudo apt-get u ...

  7. What is ASP.NET SignalR

    什么是ASP.NET SignalR ASP.NET SignalR是ASP.NET开发人员的新库,它使得为应用程序添加实时Web功能变得非常简单. 什么是“实时网络”功能?它能够让您的服务器端代码实 ...

  8. 团队作业5-Alpha版本测试报告(彼岸芳华队)

    请根据团队项目中软件的需求文档.功能说明.系统设计和测试计划,写出软件的测试过程和测试结果,并回答下述问题. 一.在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个?(10分) 在测试过程 ...

  9. 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: 未能加载文件或******

    这个问题是在用installutil.exe安装服务时候碰到的 解决方法就是把installutil.exe文件直接复制到要安装的目录下 installutil.exe的所在位置 windows/mi ...

  10. 关于MyEclipse,JDK使用的几点收获

    [1]MyEclipse如何修改JDK编译版本信息 首先打开MyEclipse——>windows——>preference(也就是 窗口——>首选项:可以在搜索框中输入JDK,查找 ...