java throw 和catch_java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799
程序运行过程中可能会出现异常情况,比如被0除、对负数计算平方根等,还有可能会出现致命的错误,比如内存不足,磁盘损坏无法读取文件等,对于异常和错误情况的处理,统称为异常处理。
Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受异常的影响而继续执行下去;throw是在程序中明确引发异常;throws的作用是如果一个方法可以引发异常,而它本身并不对该异常处理,那么它必须将这个异常抛给调用它的方法;finally是无论发不发生异常都要被执行的代码
关键字:throw,throws,try和catch的用法如下:
1、throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型
2、throw出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。
3、try出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异常,那么代码块后面的语句将不被执行。
4、catch出现在try代码块的后面,自身也是一个代码块,用于捕获异常try代码块中可能抛出的异常。catch关键字后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。
演示实例
package book.exception;/**
* 抛出异常和声明异常
* @author joe
**/
public classThrowAndThrows {/**
* 计算一个数字的平方根
* @param nStr 以字符串的形式提供数字
* @return 返回平方根
* @throws Exception 当用户输入的字符串为空,
* 或者字符串无法转换成数字,或者转换成的数字小于0,都会抛出异常*/
public static doublesqrt(String nStr) throws Exception {if (nStr == null) {//用trow关键字抛出异常,当异常被抛出时,程序会跳出该方法
throw new Exception("输入的字符不能为空!");
}double n = 0;try{
n=Double.parseDouble(nStr);
}catch(NumberFormatException e) {//将parseDouble方法可能抛出的异常NumberFormatException捕获,//然后将捕获的异常重新封装并输出
throw new Exception("输入的字符串必须能够转化成数字!", e);
}if (n < 0){throw new Exception("输入的字符串转化成的数字必须大于0!");
}returnMath.sqrt(n);
}public static voidmain(String[] args) throws Exception {try{
ThrowAndThrows.sqrt("-124.56");
}catch(Exception e) {//将sqrt方法声明的可能抛出的Exception异常捕获//打印捕获的异常的堆栈信息,从堆栈信息中可以发现异常发生的位置和原因
System.out.println("Got a Exception:" +e.getMessage());
e.printStackTrace();throw e; //不做进一步处理,将异常向外抛出
}//将sqrt声明了可能会抛出的异常向外抛出,必须在方法声明中使用throws
ThrowAndThrows.sqrt("-124.56");
}
}
程序输出结果:
Got a Exception:输入的字符串转化成的数字必须大于0!
java.lang.Exception: 输入的字符串转化成的数字必须大于0!
at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java:30)
at book.exception.ThrowAndThrows.main(ThrowAndThrows.java:37)
Exceptionin thread "main"java.lang.Exception: 输入的字符串转化成的数字必须大于0!
at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java:30)
at book.exception.ThrowAndThrows.main(ThrowAndThrows.java:37)
源码分析:
在main方法里,由于sqrt方法的声明中有throws关键字,所以,在调用该方法时,必须对throws后面声明的异常进行处置,处置的方法有两种:
(1)main方法处理该异常,使用try.....catch语句,将可能会出现的异常的代码放在try块内,将处理异常的代码放在catch块内,并指明catch能够捕获的异常的类型,当异常被捕获时,执行catch块内的语句。
(2)main方法不处理该异常,将异常向外层程序抛出。在方法声明中使用throws关键字抛出异常,方法体中不需要使用try...catch语句。
异常类Exception的getMessage方法用来获取一场的描述信息,printStackTrace方法用来打印异常的堆栈信息,通过堆栈信息能够查明异常发生的原因和位置,在调试的时候常用。
java throw 和catch_java异常处理之throw, throws,try和catch相关推荐
- java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...
- java异常处理机简答题,【简答题】JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义?...
[简答题]JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义? 更多相关问题 用蒸汽进行设备管线吹扫时,应将被吹扫的设备管线,相应 ...
- JAVA day24,25,26 异常(try、catch、finally、throw、throws),线程(Thread、Runnable、Callable)
一.异常 异常 :指的是程序在执⾏过程中,出现的⾮正常的情况,最终会导致JVM的⾮正常停⽌. 在Java等⾯向对象的编程语⾔中,异常本身是⼀个类,产⽣异常就是创建异常对象并抛出了⼀个 异常对象.Jav ...
- java throw 什么意思_Java中throw和throws有什么区别?
当然,你需要明白异常在Java中式以一个对象来看待. 并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示 ...
- java try catch_Java - 异常处理机制
异常定义及分类 异常指程序运行中遇到的各种不正常的状况,如:参数非法.数据库连接失败.文件无法找到.虚拟机发生错误等等.当异常发生时会干扰了程序的正常运行,因此我们必须针对发生的异常做出正确的处理,否 ...
- Java基础篇:异常处理
文章目录 异常概述与异常体系结构 常见异常 异常处理机制 异常处理机制一:try-catch-finally 异常处理机制二:throws 手动抛出异常:thow 如何自定义一个异常类? 总结 异常概 ...
- java 可控异常_java异常处理,重新认识java异常,java7异常处理的新特性!
原标题:java异常处理,重新认识java异常,java7异常处理的新特性! 在程序中,错误可能产生于程序员没有预料的各种情况,或者是超出了程序员可控范围的环境因素,如用户的坏数据.试图打开一个根本不 ...
- java12章_从零开始学Java 第12章 异常处理
第12章 异常处理 世界上没有完美的事情,一个完善的程序不可能总是会准确无误的运行,它们的运行流程都是在开发人员所预料的范围之内.但是,实际却不尽人意.在程序的运行过程中可能会因为各种原因而导致出现 ...
- java 抛出异常效率_Java异常处理机制
与C++.python,Ruby一样,Java也有一个异常处理机制,当程序出现异常时,系统会自动生成一个Exception对象通知程序去处理.之所以这样设计目的在于使程序有更好的容错性和可读性,实现业 ...
最新文章
- 记录某项目中的踩坑与解决(持续更新)
- 工具类的方法怎么引用_Hutool中那些常用的工具类和方法
- 检索com类工厂 80070005_Hands-On Design Patterns With C++(十二)友元工厂
- Python--一些重要的小tips【持续更新】
- 一步一步将自己的代码转换为观察者模式
- matlab讨论资金积累,资金积累、国民收入与人口增长的关系综合评估
- 找到字符串的最长无重复字符子串
- 10分钟学会理解和解决MySQL乱码问题
- 虚拟串口软件VSPM使用手册
- 计算机组成原理中断实验的分析,计算机组成原理_中断实验.pdf
- 使用FlyMcu ISP清除 STM32F411CE 芯片卡死
- c++有关iostream和iostream.h
- MATLAB频谱图绘制
- 汽水分离再热器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 大数据-机器学习导论-1
- found zsh 所有命令在终端失效
- 通过MediaRecorder 录制视频的时候,魅族手机录制视频后,大小显示0
- Linux中安装IE和Office等软件(转)
- html—显示照片(方法一)
- 如何在电脑上剪辑视频?自用多年的软件分享
热门文章
- 怎样安装WIN7系统
- 微软iscsi服务器,HOWTO: 基于 Windows Server iSCSI 服务创建 RAM Disk
- 韦伯尔分布/威布尔分布/Weibull distribution 置信区间确定
- 收房不得不注意的几大问题
- 如何隐藏或删除Windows 10任务栏图标
- MySQL binlog日志恢复数据详细操作步骤
- 软件架构必知-康威定律
- cors账号登录显示服务器错误,详解如何解决CORS账号连接RTK无法获得固定解的问题...
- 28岁,他是如何成为上市公司测试总监的
- android studio改变字体