JAVA-SE

news/2025/2/7 1:18:02/

异常:Exception

关键字

try → 可能有异常的代码

catch → 异常后怎么处理 (参数是要捕获的异常类型.如下图)

finally → 一定会执行的代码

throw → 抛出异常 用于方法

throws → throw 处理不了。向上抛

快捷键: ctrl+alt+t

捕获异常

public class test {public static void main(String[] args) {int a = 1;int b = 0;
​try {      //知道这里有异常System.out.println(a/b);  } catch (Exception e) {   //参数是要捕获的异常类型//System.exit(1);  //程序结束e.printStackTrace(); //打印错误信息}
​
​}
}

主动抛出异常

public class test {public static void main(String[] args) {new test().abc(1,0);
​
​}public void abc(int a,int b){if (b==0){throw  new ArithmeticException();//主动抛出异常,一般在方法中使用}}
}

方法中处理不了,往上抛。 ----- 接住的人要捕获异常

public class test {public static void main(String[] args) {
​try {new test().abc(1,0);} catch (Exception e) {e.printStackTrace();}
​
​}//假设这个方法中,处理不了这个异常。方法就向上抛出异常public void abc(int a,int b) throws ArithmeticException{if (b==0){throw  new ArithmeticException();//主动抛出异常,一般在方法中使用}}
}

自定义异常

public class MyException extends Exception {
​//传递数字private int detail;
​public MyException(int a ){this.detail = a;}
​//tostring;异常的打印信息
​
​@Overridepublic String toString() {return "MyException{" +"你传入的数字是=" + detail +'}';}
}
public class test {public static void main(String[] args) throws MyException{int a = 111;if (a > 10){throw  new MyException(a);//抛出}System.out.println("ok");
​}
​
​
}
​

输出
Exception in thread "main" MyException{你传入的数字是=111}at test.main(test.java:5)
​
Process finished with exit code 1
​

异常单词

1、Error Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。 比如说: Java虚拟机运行错误( Virtual MachineError ),当JVM不再有继续执行操作所需的内存资源时, 将出现 OutOfMemoryError 。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止; 还有发生在虚拟机试图执行应用时,如类定义错误( NoClassDefFoundError )、链接错误 ( LinkageError )。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大 多数是程序运行时不允许出现的状况。 对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状 况。在Java中,错误通常是使用Error 的子类描述。

2、Exception 在Exception 分支中有一个重要的子类RuntimeException (运行时异常),该类型的异常自动 为你所编写的程序定义ArrayIndexOutOfBoundsException (数组下标越界)、 NullPointerException (空指针异常)、

ArithmeticException (算术异常)、

MissingResourceException (丢失资源)、 ClassNotFoundException (找不到类)等异常,

这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生;而 RuntimeException 之外的异常我们统称为非运行时异常,类型上属于Exception 类及其子类, 从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException 、SQLException 等以及用户自定义的Exception 异常,一般情况下不自定义检 查异常。

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

3、检查异常和不受检查异常 检查异常:在正确的程序运行过程中,很容易出现的、情理可容的异常状况,在一定程度上这种异常的 发生是可以预测的,并且一旦发生该种异常,就必须采取某种方式进行处理。 解析:除了RuntimeException及其子类以外,其他的Exception类及其子类都属于检查异常,当程序 中可能出现这类异常,要么使用try-catch语句进行捕获,要么用throws子句抛出,否则编译无法通 过。 不受检查异常:包括RuntimeException及其子类和Error。 分析: 不受检查异常为编译器不要求强制处理的异常, 检查异常则是编译器要求必须处置的异 常。

集合

I/O流

多线程

多任务:一个人同时做多事情

多线程:多条路

Thread 继承

Runnable 实现

创建线程的方法一:继承Thread类

继承Thread类,重写run()方法,调用start开启线程 (线程开启不一定立刻执行,由CPU调度执行)

public class test extends Thread {public void run(){//run方法线程体for (int i =0; i < 20;i++){System.out.println("分线程-----" + i);}}public static void main(String[] args) {//main线程,主线程
​//创建一个线程对象test test1 = new test();
​//调用start()方法开启线程test1.start();for (int i = 0; i< 200;i++){System.out.println("猪猪猪线程" + i );}
​
​}
​
​
}
​

实现多线程方式二:实现Runnable接口

Runnable没用Start方法,需要用Thread带入

public class MyRunnable implements Runnable {public void run(){for(int i =0;i <100;i++){//获取线程名字System.out.println(Thread.currentThread().getName()+":"+i);}}
​
}
​
public class MyRunnableDemo {public static void main(String[] args) {//创建了一个参数的对象//Runnable没用Start方法,需要用Thread带入MyRunnable mr = new MyRunnable();//创建一个线程的对象,并把参数传递给线程。Thread t1 = new Thread(mr);//开启线程t1.start();MyRunnable mr2 = new MyRunnable();Thread t2 = new Thread(mr2);t2.start();}
}

实现多线程方式三: 实现Callable接口

import java.util.concurrent.Callable;public class MyCallable implements Callable<String> {@Overridepublic String call() throws Exception {for (int i = 0; i < 100; i++) {System.out.println("跟女孩表白" + i);}return "答应你";}
}
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class Demo {public static void main(String[] args) throws ExecutionException, InterruptedException {MyCallable mc = new MyCallable();//可以获取线程执行完毕后的结果,也可以作为参数传递给Thread对象FutureTask<String> ft = new FutureTask<>(mc);Thread t1 = new Thread(ft);t1.start();//线程结束后的返回值,要在线程后执行String s = ft.get();System.out.println(s);}
}

线程取名

public class MyThread extends Thread {public void run(){for (int i = 0; i < 100; i++) {System.out.println(getName() + ":" + i);}}
}
public class Demo01GetThreadName {public static void main(String[] args) {MyThread my1 = new MyThread();MyThread my2 = new MyThread();my1.setName("高铁");my2.setName("飞机");my1.start();my2.start();}
}

暂停

public class Demo01GetThreadName {public static void main(String[] args) {for (int i = 0; i < 60; i++) {System.out.println(i + "秒");try {Thread.sleep(1000);     //暂停1秒} catch (InterruptedException e) {e.printStackTrace();}}}
}

线程优先级

网络编程

注解和反射


http://www.ppmy.cn/news/369266.html

相关文章

SE0

1.SEO和SEM区别 seo&#xff08;search engine optimization&#xff09;搜索引擎优化 介绍&#xff1a;利用一些技术和方法去免费的去提升网站排名 特点&#xff1a;需要长期投入&#xff0c;见效慢&#xff0c;低投入。 sem&#xff08;search engine marketing&#xff…

【论文阅读】Crop Classification in a Heterogeneous Arable Landscape Using Uncalibrated UAV Data

期刊&#xff1a;remote sensing 日期&#xff1a;2018.6 发表单位&#xff1a;苏黎世大学遥感实验室地理系 目录 Abstract 1. Introduction 2. Material 2.1. Study Area ​2.2. Dataset 3. Method 3.1. Resampling 3.2. Feature Extraction ​ 3.3. Data Splitting …

JavaSE(五)

目录 1 类定义和使用1.1 类的定义1.2 类的使用 2 类的实例化2.1 实例化的概念2.2 类和对象的区别 3 this 引用3.1 this引用的概念3.2 this引用的特性 4 对象的构造及初始化4.1 构造方法4.1.1 概念4.1.2 特性 4.2 默认初始化4.3 就地初始化 5 封装5.1 封装概念5.2 访问限定符5.3…

Quartus2_13.0初级使用教程

Quartus2_13.0新手使用教程 此次教程以Altera公司的FPGA芯片cyclone IV EP4CE10F17C8N为例&#xff0c;所以使用主要开发软件是其公司配套的quartus2_13.0&#xff0c;其中仿真软件使用modelsim10.5se、代码编辑软件notepad7.6.6、辅助软件如画波形图的专业画图软件Visio 2013…

ES5

JS基础整理 注意&#xff1a; console.log(2 undefined 3) NAN 只要带 console.log(2 true 3) 6 true会解析成1&#xff0c;false解析为0 0、 1、 0、空字符串、null、undefined、false、NAN&#xff0c;都会转化为false 2、 非0数字、非空字符串、非空对象都会转化为tr…

JAVASE5

常用系统类 1常用系统类 ◆Object Object类是所有Java类的最终祖先。 如果一个类在声明时没有包含extends&#xff08;继承&#xff09;关键字&#xff0c;那么这个类直接继承Object ◆System System 类是一个抽象类&#xff0c;所有的字段和方法都是静态的。其中包含一些有用的…

JavaSE05

package day05; /*** Java异常捕获异常机制中* try-catch* 语法:* try{* 代码片段* } catch(异常类){* 捕获try代码片段中的XXException并处理* }*/ public class DemoTryCatch_1 {public static void main(String[] args) {try{//String str null;String str2 "…

JavaSE 05

JavaSE 05 1. 内部类相关 普通内部类 静态内部类 局部内部类 匿名内部类 内部类总共三大种&#xff0c;最常用的是匿名内部类。 2. try/catch finally 情况一&#xff1a;在不包含return语句的情况&#xff0c;执行顺序如下 #mermaid-svg-nxEbC0Sx4NV4o1Qm {font-family:&quo…