Java异常处理与常用类

Java中的对于程序的异常分为两种情况:

  1. 错误(Error)
  2. 异常(Exception)
Error:错误通常是系统级别的问题
Exception:异常通常是程序再运行期间,或则编译期间由编译器抛出的一些可以被程序员处理的代码上的问题

Throwable

Throwable是Java中错误和异常的顶级父类,以下是Throwable和Error,Exception之间的关系

Java中的所有错误从Error类继承,并且绝大多数类名称后缀以Error结尾,而异常则从Exception类继承,都是以Exception作为后缀结尾。

异常概论

异常一般分为两种类型:

  • 运行时异常(RuntimeException)
  • 检测异常

运行时的常见异常

在这里插入图片描述

检查异常

在这里插入图片描述

异常的处理分为:

  1. 异常抛出
  2. 异常捕获

异常的抛出

抛出的方式:
3. throws:用于方法的声明中,抛出有可能出现的异常
语法:
在这里插入图片描述

  1. throw:用于语句块中,抛出指定类型的异常对象,throw一旦执行,则一定会出现该类型异常
  2. 语法:在这里插入图片描述
注意事项:
  1. 父类方法未抛出任何异常情况下,子类只能抛出运行时异常。
  2. 游离快和静态语句块中不能抛出任何异常,因为外界无法直接调用这两种语句块

异常的捕获

语法:
在这里插入图片描述

自定义异常

自定义异常都是对现有的异常类进行扩展,常见的方式比如:继承Exception,声明一个无参的构造器或则自己创造一个满足自己需求的构造器,异常的定义通常用于标记程序运行时的异常情况,并不需要在异常中进行任何的业务逻辑处理,因此自定义异常中也无需定义任何的方法。
案例:
在这里插入图片描述

常用类

BigDecimal与DecimalFormat

BigDecimal

java.math.BigDecimal类从java.math.Number类继承而来,用于表示精度较高的数值类型的封装类型,一般用于精度要求较高的程序中,比如银行账户的金额属性,

建议:

在涉及到一些敏感的浮点数运算时,不适合直接使用float和double,精度丢失。

常见构造器:
  • java.math.BigDecimal(String s)
  • java.math.BigDecimal(double d)
  • java.math.BigDecimal(long l)
  • Java.math.BigDecimal(int i)
常见方法:
  • add(BigDecimal b):与另一个BigDecimal执行相加运算
  • subtract(BigDecimal b):与另一个BigDecimal执行相减运算
  • multiply(BigDecimal b):与另一个BigDecimal执行相乘运算
  • divide(BigDecimal b):与另一个BigDecimal执行相除运算

NumberFormat & DecimalFormat

java.text.NumberFormatjava.text.DecimalFormat是用于进行数值格式化的类,可以对数值的显示位数进行格式化处理,以及对浮点数进行金额或者百分比的格式表现;DecimalFormat是NumberFormat的子类。

java.text.NumberFormat是一个抽象类,内部提供了几个静态方法用于直接获取NumberFormat对象,而这些静态方法的实现通过java.text.DecimalFormat实现。

Objects类

Object类是所有java类的顶层父类(祖宗类),但是Objects是从Java7开始新增的一个对于java对象进行空指针安全操作的工具类

  • Objects类是一个工具类
  • Objects对外不提供构造器,因此无法创建对象
  • Objects类中的所有方法都是static
  • 提供的是对于对象的空指针安全操作的方法

Random类

Math类中提供了一个random()的方法,用于随机一个从0.0~1.0之间的浮点数,当实际需求有个性化的要求时,只能通过计算获取其他类型的随机数,实际操作相对比较麻烦;因此,Java中还提供了另一个专门用于生成各种需求的随机数类型,比如,随机整数,随机浮点数,随机布尔值。

File类

File类是来自于java.io包中的一个用于处理本机操作系统中的文件,文件可以是目录也可以是一个标准文件;File类是用于在Java中实现跟本机文件系统进行关联的操作类。其中包含一些常见的文件操作:创建文件/目录,查看文件的状态,删除文件等。

原文地址:https://www.cnblogs.com/phyger/p/14029600.html