Java基础十八

1 异常

1.1 异常概述

  • 异常:异常就是Java程序在运行的过程中出现的错误。

1.2 异常的由来

  • 问题是现实生活中一个具体的事务,是可以通过Java的类的形式进行描述的,并封装成对象。
  • 其实对不正常情况进行描述后的对象的体现在Java中就是异常。

1.3 异常的分类

  • 异常体系的超类是Throwable。
  • Throwable下面有2个子类Error(错误)和Exception(异常)。
  • Exception下面有RuntimeException(运行期异常)和编译期异常(Exception的子类除去RuntimeException的)。

1.4 JVM默认如何处理异常

  • 如果程序出现了问题,我们没有处理,那么JVM会做默认的处理。
  • 把异常的名称,原因和出现的位置等信息输出在控制台。并终止程序。
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo {
    public static void main(String[] args) {
        int a = 10 / 0;

        System.out.println("over");

    }
}

1.5 异常处理方案

1.5.1 try……catch……finally方式

  • 格式
try{
  可能出现异常的代码;
}catch(异常名 变量){
   处理异常;
}finally{
  释放资源;
}
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo2 {
    public static void main(String[] args) {
        try {
            int i = 10 / 0;
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("over");
    }
}
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo3 {
    public static void main(String[] args) {

        try {
            int[] arr = {1};
            System.out.println(arr[1]);
        }catch (ArithmeticException e){
            System.out.println("除数不能为0");
        }catch (IndexOutOfBoundsException e){
            System.out.println("数组访问越界");
        }

        System.out.println("over");

    }
}

1.5.2 throws方式

  • 使用场景:定义功能方法的时候,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo3 {
    public static void main(String[] args) {

        try {
            int[] arr = {1};
            System.out.println(arr[1]);
        }catch (ArithmeticException e){
            throw new RuntimeException("除数不能为0"+e.getMessage());
        }catch (IndexOutOfBoundsException e){
            throw new RuntimeException("数组访问越界"+e.getMessage());
        }

        System.out.println("over");

    }
}

1.6  编译期异常和运行期异常的区别?

  • 编译期异常必须处理。
  • 运行期异常可以不处理。

1.7 throw和throws的区别?

  • throws:
  • ①用在方法声明后面,跟的是异常类名。
  • ②可以跟多个异常类名,用逗号隔开。
  • ③表示抛出异常,由该方法的调用者来处理。
  • ④throws表示出现异常的一种可能性,并不一定会发生这些异常。  
  • throw:
  • ①用在方法体内,跟的是异常对象名。
  • ②只能抛出一个异常对象名。
  • ③表示抛出异常,由方法体内的语句处理。
  • ④throw表示抛出了异常,执行throw则一定会抛出某种异常。

1.8 如何处理异常?

  • 原则:如果该功能内部可以将问题处理,用try,如果处理不了,就用throws抛出异常。
  • 区别:
  • ①后续程序需要运行就try。
  • ②后续程序不需要运行就thorws。

1.9 finally关键字

1.9.1 finally关键字的特点

  • 被finally控制的语句体一定会执行,除非在执行finally之前JVM退出了。

1.9.2 finally的作用

  • 用于释放资源,在IO流操作和数据库操作中经常遇见。

2 File

3 递归

原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/9363306.html

时间: 2024-11-05 21:38:56

Java基础十八的相关文章

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

Java基础十--接口

Java基础十--接口 一.接口的定义和实例 1 /* 2 abstract class AbsDemo 3 { 4 abstract void show1(); 5 abstract void show2(); 6 } 7 8 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用 9 另一种形式定义和表示,就是 接口 interface. 10 */ 11 12 //定义接口使用的关键字不是class,是interface. 13 //interface编译后还是.class文件,其实本质

JAVA基础篇八(Java,C++中的网络)

基础篇写到这里,C++和JAVA的基础知识也要讲完了,至于更深入的使用,则需要单独寻找每种语言特有的类库. 讲到网络,不可避免地要讲TCP/IP的基本使用方法.本文只对两种语言的网络实现做简单介绍,后续学习中如果有详细说明,会逐步添加到本文中. 1.C++网络知识 简单的TCP/IP: server端: #include <WINSOCK2.H> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") void

Java基础(八):多态

一.多态的理解: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态性是对象多种表现形式的体现:现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档:如果当前在 Word 下弹出的就是 Word 帮助:在 Windows 下弹出的就是 Windows 帮助和支持:同一个事件发生在不同的对象上会产生不同的结果. 二.多态的优点和必要条件: 多态的优点:1. 消除类型之间的耦合关系2

Java基础语法&lt;八&gt; 继承

1.超类和子类 超类和子类 父类与子类 多态: 一个对象变量可以指示多种实际类型的现象称为多态 一个变量可以引用父类对象,也可以引用其子类对象,这就是多态. 不能将一个超类的引用赋给子类变量,因为调用子类方法时可能发生运行错误 子类引用可以赋给超类引用 动态绑定: 在运行时能够自动地选择哪个方法的现象称为动态绑定 是一个非常重要的特性,无需对现存的代码进行修改,就可以对程序进行扩展. 阻止继承:final类和方法 将方法和类声明为final主要目的是:确保它们不会在子类中改变语句 强制类型转换

java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的组合(例如客户端在本地,与远程服务器交互) 将class文件生成JAR   指定编译时class类文件的存储目录 打JAR(JavaArchiveFile)包仅需要编译后的class类文件,不需要源代码.java文件.可以通过-d指定编译结果输出的class存放目录 例如:java -d ../cl

java(十八)DOM

DOM DOM:document Object Model(文档对象模型) 用来将标记型文档封装成对象,并将标记型文档中的所有内容(标签,文本,属性等)都封装成对象. 封装成对象的目的是为了更为方便的操作这些文档以及文档中的内容. 因为对象的出现就可以有属性和行为被调用. 文档对象模型: 文档:标记型文档. 对象:封装了属性和行为的实例,可以直接被调用. 模型:所有标记型文档都具备一些共性特征的一个体现. 标记型文档所包含的内容无非是标签,属性和标签中封装的数据. 只要是标记型文档,DOM这种技

java基础(八) 面向对象(三)

这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:如何制作帮助文档(了解) (1)写一个类 (2)加入

Java笔记十八.内部类和匿名类

内部类和匿名类 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.内部类 1.定义 在一个类内部定义类,即为嵌套类(内部类).有如下几点特点:(1)嵌套类可以直接访问嵌套它的类的成员(变量和方法),包括private成员.但是,嵌套类的成员却不能被嵌套它的类直接访问.(2)内部类使得程序代码更为紧凑,程序更具模块化. 2.内部类实现方法 (1)类中定义和使用一个内部类 在类中直接定义的嵌套类的使用范围,仅限于这个类的内部.内部类的定义和普通