Java异常
2021-04-06 10:26
标签:返回结果 pac 抛出异常 ice 哈哈哈 没有 ++i oid 哈哈 Java异常 标签:返回结果 pac 抛出异常 ice 哈哈哈 没有 ++i oid 哈哈 原文地址:https://www.cnblogs.com/yzg-14/p/13401413.html1. 异常的概念
2. 异常的分类
3. 异常的捕获
package com.qf.demo02;
public class Test4Finally {
public static void main(String[] args) {
/*
* try...catch...finally完整的语法结构
* finally可选的
*
* 操作数据库:向数据库中添加一条记录。。
* step1:和数据库建立连接。。
*
* step2:增加一条数据
*
* step3:和数据库断开连接,释放资源
*/
try{
/*
* 有可能产生异常的代码。。
* 10行
* 5行问题啦
* 后5行不能执行了。。
*
* step1:和数据库建立连接。。
*
* step2:增加一条数据
*
*/
}catch (ArithmeticException e) {
/*
* 处理某个类型的异常。。
*/
}catch (Exception e) {
/*
* 处理其他类型的异常。。
*
* step3:和数据库断开连接,释放资源
*/
}finally {
/*
* 可选的操作
* step3:和数据库断开连接,释放资源
* 文件断开,资源的释放,临时文件的删除。。。
*/
System.out.println("此处的代码,无论是否产生异常,一定会被执行的。。。");
}
}
}
return
package com.qf.demo01;
import java.util.Arrays;
/*
* 1.try和catch中有return语句,finally里面的代码也会被执行。。
*
* 2.应该避免finally中出现return语句:Eclipse会给出警告:"finally block does not complete normally"
* finally中return语句,会覆盖前面的return语句。
*
* return的作用?
* A:返回一个结果,
* B:结束这个方法。
* finally的作用?
* 首尾工作:可能产生异常catch,也可能不产生异常try,有些必须要执行的代码--->finally
* 断开连接,释放资源,删除临时文件。。。。
* 3.finally中尝试修改变量
* 验证出:finally语句在return语句执行之后,return返回结果之前执行。
*/
public class Test2Return {
public static int test1() {
int i = 10;
try {
int j = i / 0;// 产生异常。。
System.out.println("try...");
return 1;// 1.返回一个结果,2.同时结束了该方法的执行。。
} catch (Exception e) {
System.out.println("catch..");
return 0;
} finally {
// 无论是否产生异常:try,,catch,,此处的代码一定会被执行。。
System.out.println("finally...");
// return 100;//逻辑有误
}
}
// 该方法返回一个引用类型的数据:数组,对象,StringBuffer。。。。
public static int[] test3() {
int[] arr = { 1, 2, 3 };
try {
// int i = 10/0;
System.out.println("try...");
return arr;//引用类型:地址
} catch (Exception e) {
System.out.println("catch...");
return null;
} finally {
System.out.println("finally...");
arr[0] = 100;// 在finally中修改引用类型的数据。。
}
}
private static int doSome() {
int i = 100;
try {
return i;//基本类型:数值
} finally {
System.out.println("....");
i = 30;
// ++i;
// i++;
}
}
public static int test2() {
int j = 5;
if (j > 0) {
return 0;
}
return 100;
}
public static void main(String[] args) {
// System.out.println(test1());
System.out.println(Arrays.toString(test3()));
System.out.println(doSome());
}
}
4. 抛出异常
package com.qf.demo03;
public class Test7Throw {
public static void main(String[] args) {
Exception e = new Exception("自己抛着玩的");
try {
throw e;//程序中主动抛出一个异常对象,什么时候自己扔了异常,打断程序的执行。。
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println("main..over...");
String s1 = "abc";
s1.charAt(0);
}
}
package com.qf.demo03;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Test6Throws {
// 该方法用于求2个数商
/*
* throws关键字,表示该方法对外声明,表示该方法不处理异常,调用处处理。
*/
public static void test1() throws ArithmeticException {//运行时异常
int i = 10;
int j = 0;
int div = i / j;
System.out.println(div);
}
public static void test2() throws FileNotFoundException {//受检异常:必须处理
File file = new File("C:\\Ruby\\chutian.jpeg");
FileInputStream fis = new FileInputStream(file);
}
public static void test3(){
try {
test2();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//方法调用处
}
public static void main(String[] args) {//JVM
test1();
test3();
System.out.println("啊哈哈哈哈哈哈哈哈");
}
}
5. 子类不能抛出比子类更大的异常
6. throws和throw
7. 自定义异常
package com.qf.demo01;
/*
* 我自己定义的异常
*/
class MyException extends Exception{
//提供有参构造方法。。
public MyException(String msg){
super(msg);//调用父类的有参构造:提供异常的信息
}
public MyException(){
super();//父类的无参构造,没有提供异常的信息
}
}
public class Test1Exception {
/*
* 设计一个方法,用于检验年龄,年龄不合法,抛出一个异常
*/
public static void checkAge(int age) throws MyException{
if(age
上一篇:python 基础数据类型