JAVA常用工具类异常处理
1异常的定义
异常就是与我们编译相违背在过程中出现的逻辑或忘记一些赋值等等
分为编译时错误和运行时错误
运行时异常

我们一般处理的时Exception异常;
异常处理
异常处理可以通过关键字try,catch,finally,throw,throws;
try,catch,finally处理 捕获异常
try捕获异常,通常把try放在我们觉得出错的位置;
catch 捕获异常,当异常出现时,被catch捕获通过Exception方法来提示异常(通常从异常最后一行开始处理异常);
finally
无论前面出现什么都会直接下面语句;
package com.jiedada.exception;
import java.util.Scanner;
public class Frist {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=,y=;
System.out.println("=============运行开始=========");
Scanner sc=new Scanner(System.in);
try {
System.out.println("请输入分子");
x=sc.nextInt();
System.out.println("请输入分母");
y=sc.nextInt();
}
catch(Exception e)
{
System.out.println("================程序结束=========");
e.printStackTrace();
}
finally {
System.out.println("该算术表达式结果为"+(x/y));
}
}
}
catch可以使用多个子类的方法来判断属于那种类型的错误如ArithmeticException(算术表达式的错误)
在多个cat表达式中最后一个catch中最好或者一定要包含一个Exception的子方法表达式这样才能检查所有错误;
InputMismatchException(判断输入的类型不是不错的
package com.jiedada.exception; import java.util.InputMismatchException;
import java.util.Scanner; public class Frist { public static void main(String[] args) {
// TODO Auto-generated method stub
int x=0,y=0; System.out.println("=============运行开始=========");
Scanner sc=new Scanner(System.in);
try {
System.out.println("请输入分子");
x=sc.nextInt();
System.out.println("请输入分母");
y=sc.nextInt();
System.out.println("该算术表达式结果为"+(x/y));
}
catch(ArithmeticException e)
{
System.out.println("除数不能为0,请重新输入");
e.printStackTrace();
}
catch(InputMismatchException e)
{
System.out.println("请输入整数");
e.printStackTrace();
}
catch(Exception e)
{
System.out.println("出错啦---");
e.printStackTrace();
}
finally {
System.out.println("================程序结束=========");
}
} }
Sysout.exit(非0数)终止程序运行
return在这个结构中的使用:因为finally的存在,不管怎么都会执行finally中的语句所以
return写在finally中都只会返回finally中的return;
throws声明异常
是抛出异常,通过在方法后面添加throws和 错误信息提示如Exception,ArithmeticException;

是通过调用该方法的实列通过try catch finally来执行
可以通过文档注释对异常进行说明;
package com.jiedada.exception;
import java.util.Scanner;
public class Three {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
int result=test();
System.out.println(result);
} catch (ArithmeticException e) {
// TODO Auto-generated catch block
System.out.println("除数不能为0");
e.printStackTrace();
}
}
/**
* 该方法是除法的运算
* @return 该算术的商
* @throws ArithmeticException
*/
public static int test()throws ArithmeticException{
int x=0,y=0;
System.out.println("=============运行开始=========");
Scanner sc=new Scanner(System.in);
System.out.println("请输入分子");
x=sc.nextInt();
System.out.println("请输入分母");
y=sc.nextInt();
System.out.println("================程序结束=========");
return x/y;
}
}
throw处理抛出异常;
第一种方法:throw也是一种抛出异常结构为通过try catch在try中写入throw new 异常类型();
第二种方法:和throws差不太多,通过在代码中写入throw new 异常类型()[建议不要抛出非检查异常如,ArithmeticException]
通过在方法后面添加throws和 错误信息提示如Exception;谁调用谁就通过try catch异常处理;
在Exception中有输入字符串的方法如下:
在第二种中throw new 异常类型()通过在方法后面添加throws后面的异常处理必须要比throw中的大,如

package com.jiedada.exception;
import java.util.Scanner;
public class Four {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
testAge();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*public static void testAge()
{
System.out.println("请输入入住者的年龄");
Scanner input=new Scanner(System.in);
int age=input.nextInt();
if(age<18||age>80)
{
try {
throw new Exception("18岁以下,80岁以上的人需要家人的陪同入住");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else
{
System.out.println("欢迎入住");
}*/
public static void testAge() throws Exception
{
System.out.println("请输入入住者的年龄");
Scanner input=new Scanner(System.in);
int age=input.nextInt();
if(age<18||age>80)
{
throw new Exception("18岁以下,80岁以上的人需要家人的陪同入住");
}else
{
System.out.println("欢迎入住");
}
}
}
自定义异常
当需要反复使用一些异常时我们可以自己定义:先创建一个异常继承Eception类,然后和Exception的方法相同。
在创建类的时候我们和其他的类一样需要创建构造类;
异常链
多个throw的向上抛出产生的异常问腿

package com.jiedada.exception;
public class Five {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ThreeTest();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void OneTest() throws HotelException
{
throw new HotelException();
}
public static void TwoTest() throws Exception
{
try {
OneTest();
}catch(HotelException e)
{
throw new Exception("这是第三个TEST",e);
}
}
public static void ThreeTest() throws Exception
{
try {
TwoTest();
}catch(Exception e2)
{
//throw new Exception("这是第三个TEST");
Exception e1=new Exception();
e1.initCause(e2);
throw e1;
}
}
}

总结




保证能够正常执行当加入System.exit(非0数字)会终端;在该语句中return只会在执行了finally后才会返回值;


当子类继承父类的抛出方法是,子类只能抛出父类抛出方法的子类或者同类
JAVA常用工具类异常处理的更多相关文章
- JavaEE-实验一 Java常用工具类编程
该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1. 使用类String类的分割split 将字符串 “Solutions to selected exercises ca ...
- JAVA常用工具类汇总
一.功能方法目录清单: 1.getString(String sSource)的功能是判断参数是否为空,为空返回"",否则返回其值: 2.getString(int iSource ...
- Java常用工具类---XML工具类、数据验证工具类
package com.jarvis.base.util; import java.io.File;import java.io.FileWriter;import java.io.IOExcepti ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- java常用工具类(java技术交流群57388149)
package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. ...
- 项目经验分享——Java常用工具类集合 转
http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...
- java 常用工具类
1. org.apache.commons.collections4包提供CollectionUtils.MapUtils.ListUtils.SetUtils等工具类: 2. org.apache. ...
- Java常用工具类之Excel导出
package com.wazn.learn.util; import java.util.List; import java.util.Map; import org.apache.poi.hssf ...
- Java常用工具类之删除文件
package com.wazn.learn.util; import java.io.File; /** * 删除文件工具类 * @author yangzhenyu * */ public cla ...
随机推荐
- 【Mysql】Mysql Json类型或Text类型可以建索引吗?
一.JSON类型 答案是不可以 为Json类型建索引会报错 mysql)); ERROR (): JSON column 'card_pay_data' cannot be used in key s ...
- python入门-基础语法
一.变量 定义字符串要加单引号‘’ 变量命名规范: 变量名只能是字母.数字或下划线的任意组合 变量名的第一个字符不能是数字 变量名不能用关键字 变量名不要用中文 变量名不要太长,区分大小写 面就用单引 ...
- ArcPy批量计算Mean Center的两个实例
很久没用arcpy了,碰了好几次壁,把这次做的贴上来,以备下次可以跳过这些简单的问题 import arcpy arcpy.env.workspace = 'C:\Users\Qian\Documen ...
- [noip2017] 前三周总结
[noip2017] 前三周总结 10.20 Fri. Day -21 距离noip复赛还有3周了,进行最后的冲刺! 首先要说今天过得并不好,和我早上比赛打挂了有关系. 不过每一次比赛都能暴露出我的漏 ...
- js利用sort()方法实现数组排序
1.number类型排序 let aa = [1,11,2,4,3] aa.sort() console.log(aa) //[1,11,2,3,4] aa.sort((a,b)=>a-b) c ...
- Go程序设计
01 Go基础特性&独有特性
- day10_python_1124
认知: 随着年龄阅历的变化而变化.01 去年内容回顾 *args **kwargs: 万能参数,动态参数 * 魔性用法: 函数的定义时,* ** 聚合. 函数的执行时,* ** 打散. 形参顺序: 位 ...
- Android 音视频深入 十一 FFmpeg和AudioTrack播放声音(附源码下载)
项目地址,求starhttps://github.com/979451341/AudioVideoStudyCodeTwo/tree/master/FFmpeg%E6%92%AD%E6%94%BE%E ...
- UVa 11134 - Fabled Rooks 优先队列,贪心 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- springboot学习之构建简单项目搭建
概述 相信对于Java开发者而言,spring和springMvc两个框架一定不陌生,这两个框架需要我们手动配置的地方非常多,各种的xml文件,properties文件,构建一个项目还是挺复杂的,在这 ...