javase基础11

1.异常的概念

A:异常:就是程序运行中出现的不正常的情况.
B:异常的由来:程序中的问题也是现实生活中的一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象.

2.异常的分类

:异常的继承体系
Throwable
Error (错误:一出现就是致命的)
服务器宕机,数据库崩溃等
Exception
RuntimeException(运行时异常,一般都是程序员犯得错误,需要修改源码的.)
编译时异常:在编译时必须进行处理,不处理无法通过编译.

3.异常的处理方式

try{
  需要检测的异常;
} catch(异常类名 异常变量) {
  异常处理代码
  可以调用异常的方法
  通常我们只使用一个方法:printStackTrace打印异常信息
}

public static void main(String[] args) {
        //指定文件
        Scanner sc = new Scanner(System.in);
        String path = sc.next();

        try {
            FileWriter fw = new FileWriter(path);
            System.out.println("输出成功了");
        } catch(IOException e) {
            System.out.println("您输入的路径有误!");
            //用于展示异常出现的位置和基本信息
            e.printStackTrace();
        }

        System.out.println("后边的代码");
}

4.使用throws关键字处理异常

throws的方式处理异常
定义功能方法时,需要把出现的问题暴露出来让调用者去处理。
那么就通过throws在方法上标识
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) throws 异常类名{}

/*
 * 运行时异常处理:
 *         该异常在编译期不检查语法错误的.可以处理,也可以不处理.
 *
 *         一般情况下,遇到java自身提供的运行时异常,都可以通过逻辑解决,避免异常产生.
 *         常见运行时异常:空指针异常,索引越界异常,类型转换异常
 *
 * 声明抛出处理
 * 捕获处理
 */
public class Demo1runtime_exception {

    public static void main(String[] args) {

        try {
            System.out.println(10/0);
        } catch (ArithmeticException ae) {
//            可以打印异常信息,也可以不打印
//            ae.printStackTrace();

//            如果出现异常的话
            System.out.println("除数不能为0!");
        }
        System.out.println("后边的代码");

        try {
            method();
        } catch (ArithmeticException ae) {
            System.out.println("除数不能为0!");
        }
    }

    public static void method() throws ArithmeticException{
        System.out.println(10/1);
    }

}

5.try…catch处理多个异常格式

try{
  需要检测的异常;
} catch(异常类名1 异常变量1) {
  异常处理代码
  可以调用异常的方法
  通常我们只使用一个方法:printStackTrace打印异常信息
} catch(异常类名2 异常变量2) {
  异常处理代码
  可以调用异常的方法
  通常我们只使用一个方法:printStackTrace打印异常信息
}……//可以有无数个catch

6.throws 处理多个异常格式

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) throws 异常类名1,异常类名2……{}

/*
 * 多异常处理一:
 *         声明抛出处理,直接抛出多个异常即可
 *
 * 多一场处理二:
 *         一个try多个catch的方式
 *
 * java是中断异常的处理方式
 */
public class Demo2multi_exception01 {

    public static void main(String[] args) {

        //一个try多个catch的方式
        try{
            method();
        }catch(ArithmeticException ae) {
            System.out.println("您的除数不能为0");
        }catch(IOException e) {
            System.out.println("您要访问的文件不存在");
        }

        System.out.println("abc");
    }

    //一个方法声明抛出多个异常
    public static void method() throws ArithmeticException,IOException{

        System.out.println(10/1);
        System.out.println("method逻辑1完成");
        method2();
        System.out.println("method逻辑2完成");
    }
    public static void method2() throws IOException {
        //指定文件
        Scanner sc = new Scanner(System.in);
        String path = sc.next();
        FileWriter fw = new FileWriter(path);
    }
}

7.多个异常用一个catch处理格式

try{
  需要检测的异常;
} catch(异常类名1|异常类名2…… 异常变量) {
  异常处理代码
  可以调用异常的方法
  通常我们只使用一个方法:printStackTrace打印异常信息
}

8.异常在继承中的注意事项

a:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
b:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
c:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

9.finally关键字

try{
  需要检测的异常;
} catch(异常类名 异常变量) {
  异常处理代码
  可以调用异常的方法
  通常我们只使用一个方法:printStackTrace打印异常信息
}finally{
  此处存放一定要执行的代码
  一般把释放资源的代码放到finally中
}

/*
 * 在try/catch后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收。
 */
public class Demo1finally {

    public static void main(String[] args) {

        //编译时异常
        //"C:/javaSE/11code/myException/a.txt"
        //指定文件
        Scanner sc = new Scanner(System.in);
        String path = sc.next();

        try {
            FileWriter fw = new FileWriter(path);
            fw.write("abc");
        } catch (IOException e) {
            System.out.println("产生了IO问题");
        } finally {
            System.out.println("我要关闭资源");
        }

        System.out.println("abc");
    }
}

10.自定义异常

Class 异常名 extends Exception{ //或继承RuntimeException
  public 异常名(){
  }
  public 异常名(String s){
    super(s);
  }
}

/*
 * 自定义异常:
 *         编译时异常继承Exception,运行时异常继承RuntimeException。
 *         关键字throw 抛出异常
 *         回忆产生异常:
 *             创建异常对象
 *             抛出异常
 */
public class Democustom_exception {

    public static void main(String[] args) {

        //年龄小于18岁,产生异常
        Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();

        if(age < 18) {
            //产生异常
            //创建异常对象
            U18Exception u18 = new U18Exception("年龄小于18岁");
            //抛出异常
            try {
                throw u18;
            } catch (U18Exception e) {
                System.out.println("年龄不满足婚恋网站年龄");
                e.printStackTrace();
            }
        }

        //可以直接手动创建异常对象
        try {
            throw new RuntimeException("我产生了一个运行时异常");
        } catch (Exception e) {
            System.out.println("直接创建了一个runtimeexception对象");
        }

        System.out.println("abc");
    }

}
时间: 2024-11-15 06:57:08

javase基础11的相关文章

Java复习第二天---JavaSE基础

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

JavaSE基础之封装

JavaSE基础之封装 一.Java中的封装 1.字面意思: 包装: 2.专业含义: 面向对象的三大特征之一: 指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.封装的目的 1.隐藏类的实现细节: 2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问: 3.可进行数据检查,从而有利于保证对象信息的完整性: 4.便于修改,提高代码的可维护性: 三.如何实现良好的封

JavaSe基础回顾(一)

JavaSe基础知识点总结 1.变量 变量是内存中用来存放特定数据类型数据的一块内存空间,它的值是可以改变的.Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值 变量名:合法的标识符 变量的数据类型:可以是基本类型和引用类型(必须包含类型) 存储单元:存储单元大小是由数据类型决定的,如:int 为4个字节32位 变量值:在存储单元中存放的值 变量的声明格式: 类型 变量名: 2.运算符 运算符种类                       符号 赋值运算符           

JavaSE基础之JDBC

JavaSE基础之JDBC 1.JDBC 的步骤: ①加载数据库驱动: a.MySQL:com.mysql.jdbc.Driver: b.SQLServer:com.microsoft.jdbc.sqlserver.SQLServerDriver: c.Oracle:oracle.jdbc.driver.OracleDriver: ②获取数据库链接:  a.MySQL:jdbc:mysql://localhost:3306/DataBaseName: b.SQLServer:jdbc:sqlse

java-se基础 2(注释和原生数据类型)

Java SE 第二讲: 1. Windows: notepad, editplus, ultraedit, gvim Linux: vi, vim, gedit 2. Java中的数据类型分为两大类: 1) 原生数据类型 (Primitive Data Type) 2) 引用类型(对象类型) (Reference Type) 3. 变量与常量:所谓常量,就是值不会变化的量:所谓变量,就是值可以变化的量. 4. 如何定义变量? 变量类型 变量名; int a; 5. 如何为变量赋值? 变量名 =

javaSE基础07

javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 static用来修饰成员变量 一个成员变量被static修饰了叫静态成员变量,如果没有修饰叫非静态成员变量 静态成员变量的访问方式: 1.用对象进行访问:对象.变量名 2.还可以通过类名来访问:类名.变量名 使用注意点: 1.不要认为方便就将所有的变量用static修饰,只有当这个数据真正需要共享的时候才用

javase基础复习攻略《二》

今天就开始的真正走进JAVASE的世界,本篇介绍的是:JAVASE基础语法,大家如果有C语言的基础,对于本节内容一定感觉非常轻松,编程语言之间的都是相通的,只不过C语言属于面向过程编程,而JAVA语言则是一种面向过程的设计思路,相信以后的发展一定会朝着面向服务的方向. 废话不多说,开始今天的总结: 1.标示符: 标示符为何物?它就是JAVA规定的一种命名规则.凡是需要你自己进行命名的地方都需要遵守JAVA的标示符规则,JAVA标识符包括:a.标识符是由英文字母.下划线(_).美元符号($)和数字

javase基础复习攻略《十》

按照计划本篇为大家总结JAVA的网络编程,什么叫网络编程呢?网络编程!=网站编程,对于这一点大家一定要注意,很多小朋友都曾经这么认为.既然谈到网络编程,咱们先了解一下网络的基础知识,什么是计算机网络?把分布在不同区域的计算机与专门的外部设备用通信线路互联成一个规模大.功能强的网络系统,从而使众多计算机可以方便的互相传递信息,共享硬盘.软件.数据信息等资源. 什么是网络通信协议:计算机网络中实现通信必须有一些约定即通信协议,对速率.传输代码.代码结构.传输控制步骤.出错控制等制定标准. 网络通信接

J2SE基础:11.异常处理

1:异常的概念: 异常是程序在执行时发生的事件(异常发生在运行期间). 程序出现错误,打断原本的执行流程. 2:Java中处理异常. 在Java中,异常被封装成一个对象.(属性和方法) 3:异常产生 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象. 生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称 为引发异常. 4:异常的分类 异常的根类(throwable) 错误:Error(程序无法处理的错误) 异常:Exception(可以处理的错误.程序可以捕获