java异常处理机制(try-catch-finally)

/*
 * 异常处理机制
 * 1.分类:Error和Exception
 * 		Error错误是JVM自动报错的,程序员无法解决例如开数组过大int a[]=new int [1024*1024*1024];
 * 		Exception错误时程序员要解决的问题,例如指针越界,零做除数
 * 2.异常处理
 * try{
 * 		需要检测是否发生异常的代码
 * }
 * catch(Exception e){
 * 		处理异常的代码(一般是打印错误信息)
 * }
 * finally{
 * 		必须要运行的代码(一般是关闭数据库等释放资源的操作)
 * }
 * */
 1 public class test {
 2     public static void main(String[] args) {
 3         int a=10,b=0,c=0;
 4         try{
 5             c=div(a,b);//有可能出错的代码,放在try中进行检测
 6         }catch(Exception e){
 7             //自己定义的输出内容
 8             System.out.println("除数是0啦!");
 9             //得到错误信息
10             System.out.println(e.getMessage());
11             //异常名称和异常信息
12             System.out.println(e.toString());
13             //异常名称+异常信息+异常位置(JVM默认的异常处理机制)
14             e.printStackTrace();
15         }finally{
16             System.out.println("程序有错请检查");
17         }
18         
19         System.out.println("经过运算c="+c);
20     }
21     //在有可能出现抛异常的函数名后面需要加上throws Exception来声明可能会抛出异常,提高程序的安全性
22     //调用该方法的地方必须要try-catch语句,否则编译错误
23     public static int div (int a,int b)throws Exception{
24         return a/b;
25     }
26 }

/* * try和finally内的代码块是肯定会执行的 * catch中的代码块只有抛出异常时才会执行(如果有多个catch,只会执行一个,而且抛出的异常也只有一个) * * * 当然平时我们会用到一些自定义的异常,下面我们介绍一下自定义异常的内容 * * 自定义异常必须要继承Exception类,否者无法抛出异常*/

 1 public class test {
 2     public static void main(String[] args) {
 3         int a=10,b=-9,c=0;
 4         try{
 5             c=div(a,b);//有可能出错的代码,放在try中进行检测
 6         }catch(fushuException e){
 7             //自己定义的输出内容
 8             System.out.println("除数是负数啦!");
 9             //调用tostring方法,和getValue方法,来打印相应的报错语句
10             System.out.println(e.toString()+"负数的值是:"+e.getValue());
11         }finally{
12             System.out.println("程序有错请检查");
13         }
14         
15         System.out.println("经过运算c="+c);
16     }
17     //在有可能出现抛异常的函数名后面需要加上throws Exception来声明可能会抛出异常,提高程序的安全性
18     //调用该方法的地方必须要try-catch语句,否则编译错误
19     public static int div (int a,int b)throws fushuException{
20         if(b<0){
21             //因为是个人写的异常类,所以要自己将异常类创建,并抛出
22             throw new fushuException("输入的除数是负数---/by 负数", b);
23         }
24         return a/b;
25     }
26 }
27 /*
28  * 定义一个负数异常类,一旦出现除数是负数,就会抛出异常
29  * */
30 class fushuException extends Exception{
31     private int value;
32     public fushuException(String msg,int value) {
33         //在Exception这个父类中有赋值函数和输出函数,所以只需要调用父类的构造函数
34         super(msg);
35         this.value=value;
36     }
37     public int getValue(){
38         return value;
39     }
40     
41 }
/*
 * throws和throw的区别
 * 1.位置不同
 * 		throws放在函数名后面
 * 		throw放在函数里面
 * 2.后面跟的内容不同
 * 		throws后面跟一个或多个异常类名,用逗号隔开
 * 		throw后面跟一场对象
 * */
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

十一国庆节 之 “变量与函数同名时,会输出谁?”

看这样一个题目: b = function c() { a = 1, b = 2, c = 3; console.log(a); //1 ...

18710
来自专栏Python小屋

数学老师从没这么教过,乘法竖式中进位可以是多位(附Python实现与测试源码)

大概十五年前,曾经写过一个C语言版本的类似代码。核心思想是:在乘法竖式计算过程中,每次的进位实际上是可以超过一位的,虽然老师从来没有这么教过。 ? 这样的操作在...

3396
来自专栏Android干货

Python函数式编程(一):高级函数

1102
来自专栏C语言及其他语言

【编程经验】变量的存储类型

在 C 语言中,变量是对程序中数据所占内存空间的一种抽象定义,定义变量时,用户定义变量的名、 变量的类型,这些都是变量的操作属性。不仅可以通过变量...

1071
来自专栏吾爱乐享

java学习之数组元素排序,冒泡排序和选择排序

1184
来自专栏淡定的博客

python入门基础语法总结

1063
来自专栏老司机的技术博客

人人都能学会的python编程教程10:调用函数

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。

96013
来自专栏python学习指南

Python的itertools模块

本章将介绍Python自建模块itertools,更多内容请参考:Python参考指南 python的自建模块itertools提供了非常有用的用于操作迭代对...

3536
来自专栏编程直播室

TypeScript中的可选属性和只读属性

3897
来自专栏python3

python 函数

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

1121

扫码关注云+社区

领取腾讯云代金券