1.Java异常简介

1.什么是异常
异常出现的时候代码会无法正常运行下去,会产生各种问题
2.捕捉异常的作用
提早发现异常,方便查找问题,并给出解决方法
3.Java中的异常
1.Java中所有不正常的类都是继承与Throeable类,Throwable主要包括两个大类,一个是Error类,一个是Exception类
Error类主要包括虚拟机错误和线程死锁,一旦Error出现了,程序就彻底挂了,被称为程序终结者;
Exception类主要指编码、环境、用户操作输入出现问题,Exception主要包括两大类,运行时异常,也是非检查异常(RuntimeException)和检查异常(其他的一些异常)
RuntimeException异常主要包括以下四种异常:空指针异常,数组下标越界异常,类型转换异常,算术异常。
分析这四种异常
空指针异常:NullPointerException

String str = null;
System.out.println(str.length());

数组下标越界异常:ArrayIndexOutOfBoundsException

int[] ary = {1,2,3}
for (int i=0; i<=3; i++){
System.out.println(ary[i]);
}

类型转换异常:ClassCastException

class Animal{

}
calss Dog extends Animal{ }
calss Cat extends Animal{ }
public class Test{
public static void main(String[] args){
Animal a1 = new Dog();
Animal a2 = new Cat();
Dog d1 = (Dog) a1;
Dog d2 = (Dog) a2;
}
}

算术异常:ArithmeticException

int one=12;
int two=0;
System.out.println(one/two);

2.Java中使用rty……catch……finally实现异常处理

try-catch-finally的使用方法:

try{
//一些可能会抛出异常的方法
}catch(异常类型){
//处理该异常的代码快11
}catch(异常类型){
//处理该异常的代码快22
}catch(异常类型){
//处理该异常的代码快33
}finally{
//最终将要执行的一些代码
}

如果try中的代码发生异常,将发生以下行为:
1.程序终止执行
2.程序的控制权将被移交给catch块中的异常处理程序

关于catch块:
1.catch中具体执行什么操作根据需要写
2.可以有多个catch块,try抛出来的异常符合哪一个catch异常类型,就执行哪一个
3.多个catch块时,先定义小的,具体的,子类的,再定义大的,父类的。catch也遵守就近原则

关于finall:
1.是最终要执行的一些代码,即善后处理

3.案例

1.try-catch

 public class TryCatchTest {
/**
* divide(除数)
* result(结果)
* 每次循环,divide减一,result=result+100/divider
* 如果:捕获异常,打印输出“抛出异常了!!!”,返回-1
* 否则:返回result
*/
public int test(){
int divider=10;
int result = 100;
try{
while(divider>-1){
divider--;
result=result+100/divider;
}
return result;
}catch (Exception e){
e.printStackTrace();//打印出异常
System.out.println("循环抛出异常了");
return -1;
} } public static void main(String[] args) {
TryCatchTest tct = new TryCatchTest();
int result = tct.test();
System.out.println("test()方法,执行完毕,返回的值是:"+result);
}
}

2.try-catch-finally

 public class TryCatchTest {
/**
* divide(除数)
* result(结果)
* 每次循环,divide减一,result=result+100/divider
* 如果:捕获异常,打印输出“抛出异常了!!!”,返回999
* 否则:返回result
* fianlly:打印“这是finally输出!!”
*/
public int test2(){
int divider=10;
int result = 100;
try{
while(divider>-1){
divider--;
result=result+100/divider;
}
return result;
}catch (Exception e){
e.printStackTrace();//打印出异常
System.out.println("循环抛出异常了"); //此处的catch被捕获,并打印
return result=999; //返回result
}finally {
System.out.println("这是finally!!");//执行了finally
System.out.println("我是Result,我的值是:"+result);
} } public static void main(String[] args) {
TryCatchTest tct = new TryCatchTest();
int result2 = tct.test2();
System.out.println("我想大声告诉你,test()执行完毕,return="+result2);
}
} …………
java.lang.ArithmeticException:(省略)
循环抛出异常了
这是finally!!
我是Result,我的值是:999
我想大声告诉你,test()执行完毕,return=999

4.Java中的异常抛出

4.1.throw和throws的使用

java中的异常处理有三种方式,第一种是系统自动抛出,就是我们上面讲的那些,第二种是针对语句使用的throw,第三种是针对方法使用的throws
第一种已经讲过了,看看第二种,throw的用法
throw是语句抛出一个异常
语法:

语法:throw (异常对象);
如:throw e;

一般用与程序出现某种逻辑时,程序员主动的抛出某种特定类型的异常

public static void main(String[] args) {
String s = "abc";
if(s.equals("abc")) {
throw new NumberFormatException();
} else {
System.out.println(s);
}
//function();
}

会抛出异常:NumberFormatException()
throws
throws是方法可能抛出的异常(用在申明方法时,表示该方法可能要抛出异常)
语法:

[修饰符] 返回值 方法名([参数列表]) [throws(异常类)]{
…………
}

当每个方法可能会抛出某种异常时用于throws声明可能抛出的异常,虽然异常抛出了,但是处理这个异常是在调用这个方法的时候处理

//throws抛出function()可能会产生的一个异常
public static void function() throws NumberFormatException{
String s = "abc";
System.out.println(Double.parseDouble(s));
} public static void main(String[] args) {
//调用了function()方法,则要处理这个方法抛出来的异常
try {
function();
} catch (NumberFormatException e) {
System.err.println("非数据类型不能转换。");
//e.printStackTrace();
}
}

4.2.throw和throws的比较

1.throws出现在方法函数头,而throw出现在函数体
2.throws表示出现异常的一种可能性,并不一定要发生这些异常,throw则是抛出了异常,执行throw则一定抛出某种异常
3.两者都是抛出异常,自己并不出理,都是由调用的它的地方来处理

5.Java中的异常总结

1.处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2.在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3.对于不确定的代码,也可以加上try-catch,处理潜在的异常
4.尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
5.具体如何处理异常,要根据不同的业务需求和异常类型去决定
6.尽量添加finally语句块去释放占用的资源

第11章 Java异常与异常处理的更多相关文章

  1. 程序员教程-11章-Java程序设计

    自己是学java的,先看第十一章java吧. 列出章节目录,便于自己回忆内容. 11.1 Java语言概述 1 Java语言的特点 2 Java开发环境 11.2 Java语言基础 11.2.1 基本 ...

  2. java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类

    package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...

  3. JAVA异常与异常处理详解

    一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...

  4. Java异常与异常处理简单使用

    异常就是程序运行过程中阻止当前方法或作用域继续执行的问题: 任何程序都不能保证完全正常运行,当发生异常时,需要我们去处理异常,特别是一些比较重要的场景,异常处理的逻辑也会比较复杂,比如:给用户提示.保 ...

  5. 那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!

    ---恢复内容开始--- 首先,我是个小小的菜鸟,最近突然突发奇想,想研究一下java的异常和异常的处理,稍有些理解,老鸟们莫要嘲笑... 既然要讲异常和异常的处理,我们就要先了解异常,那么,什么是异 ...

  6. Java异常及异常处理

    如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法.在这种情况下会抛出一个封装了错误信息的对象.此时,这个方法会立刻退出同时不返回任何值.另外,调用这个方法的其他代码也无法继续执行, ...

  7. JAVA异常及其异常处理方式

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

  8. Java异常与异常处理

    异常体系结构 1.所有异常都继承于Throwable类,其下有两大子类: (1)Error类:错误,一般编程人员不太接触,如虚拟机错误.线程死锁.硬伤:使程序崩溃 (2)Exception类:异常,编 ...

  9. JAVA异常与异常处理详解【转】

    感谢!!!原文地址:https://www.cnblogs.com/knightsu/p/7114914.html 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在ja ...

随机推荐

  1. 查找html节点的方法

    document.firstChild document.documentElement(兼容性较好) 查找body节点的方法 document.firstChild.lastChild docume ...

  2. js动态的把左边列表添加到右边,可上下移动。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Oracle 数据库基础学习 (八) PL/SQL综合练习

    1.定义游标:列出每个员工的姓名.部门名称并编程显示第10个到第20个记录. declare cursor zemp_cursor is (select temp.ename, temp.dname ...

  4. Session中load/get方法的详细区别

    Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.其区别在于: 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个O ...

  5. 深入理解及应用Position

    position俗称定位,主要取值及作用如下: static 默认值.没有定位,出现在正常文档流中 absolute 绝对定位,相对于position为absolute.relative.fixed的 ...

  6. 从CSS实现正片叠底看=>混合模式mix-blend-mode

    兼容性:这个东西说多了也没意思,像HTML5和CSS3这种兼容性时刻变化的东东,我们最好在自己支持的设备上实验,不支持,就在想办法呗,这个东西就是为了方便和好玩 所有属性: mix-blend-mod ...

  7. ASP.NET MVC 简介

    1. ASP.NET MVC 是什么? ASP.NET MVC是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRai ...

  8. iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案

    现象:The identity used to sign the executable is no longer valid Please verify that your device’s cloc ...

  9. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  10. Mac常用shell命令

    几个常用命令 pwd 命令名称:pwd 英文:print work directory 描述:查看当前工作目录的完整路径 ls 英文全称: list 描述:列出目录下的内容清单 常用参数: -l:列出 ...