Day5 Java 5
uwupu 啦啦啦啦啦

Java 个人总结 5

异常

分类

检查性异常,运行时异常,错误。

Throwable

分为 Error和Exception。

Error不可预见,尽可能避免;
Exception可以被开发者预见。

Exception分为IOException和RuntimeException(运行时异常)。

Error

Error类对象由Java虚拟机生成并抛出,大多数错误与开发者所执行的操作无关。
例:OutOfMemoryError,当JVM不再有继续执行所需的内存资源。

Exception

一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

Error和Exception的区别

Error通常是灾难性的致命错误,是程序无法控制和处理的。当出现这些异常,Java虚拟机(JVM)一般会选择终止线程;
Exception通常情况下是可以被程序处理的,并却在程序中应该尽可能的去处理这些异常。

异常处理

关键字

try、catch、finally、throw、throws

捕获异常和错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Test {
public static void main(String[] args) {
try {
int t = 1 / 0;//除以0的异常 ArithmeticException
}catch (ArithmeticException e){
System.out.println("/0 Exception");
}

try {
a();//栈溢出错误 StackOverflowError
}catch (StackOverflowError t){
System.out.println("Error: "+t.toString());
}
/*
/0 Exception
Error: java.lang.StackOverflowError
*/
}
public static void a(){
b();
}
public static void b(){
a();
}
}

抛出异常

1
2
3
4
5
6
public class Test2 {
public static void main(String[] args) {
//主动抛出异常
throw new ArithmeticException("主动抛出的异常");
}
}
1
2
Exception in thread "main" java.lang.ArithmeticException: 主动抛出的异常
at Demo7.Test2.main(Test2.java:6)

自定义异常

自定义异常类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//自定义异常类
public class MyException extends Exception{
//假设a大于10,则抛出异常
private int a;

public MyException(int a) {
this.a = a;
}

//异常打印的信息
@Override
public String toString() {
return "MyException{" +
"a=" + a +
'}';
}
}

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
public static void main(String[] args) {
try {
yTest(11);
}catch (MyException e){
System.out.println("异常");
}
}
public static void yTest(int a) throws MyException {
System.out.println("a= " + a);
if (a > 10) {
throw new MyException(a);
}
System.out.println("ok");
}
}
1
2
a= 11
异常

其他

  1. 处理运行时异常时,合理规避同时辅助try-catch处理;
  2. 在多重catch块后面,可以加一个catch(Exception) 来处理可能会被遗漏的异常;
  3. 对于不确定的代码,也可加上try-catch处理潜在异常;
  4. 尽量去处理异常,切忌简单地调用printStackTrace()去打印输出;
  5. 尽量添加finally语句块去释放占用的资源。

一些转义字符

\u0000
\b 退格键
\n 换行
\t 制表

小结

  1. >>> 无符号右移 移位运算符
  2. JavaDoc注释

    @author 作者
    @Version 版本
    @Since JDK版本
    @param 参数
    @return 返回
    @throws

  3. 类与对象
    类是对象的抽象:模板class;
    对象是类的具体;
    单例模式,需要构造器私有;
  4. 单例模式
    目的:保证一个雷仅有一个实例,并提供一个访问它的全局访问点;
    主要解决:一个全局使用的类频繁地创建与销毁;
    如何解决:判断系统是否已经有这个实例,若有则返回,没有则创建;
    关键代码:构造函数私有;
  5. 多态:父类引用指向子类对象。
 评论