1.异常
java运行过程中出现的错误
异常分类
运行时异常RunTimeException
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
空指针
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
越界 类 IndexOutOfBoundsException
指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
Throwable
- Error
- Exception–RunTimeException
- Throwable
处理方案
- 虚拟机默认处理方案
- 异常处理方案
try…catch…finally
try捕获异常,
catch处理异常(要不然是异常的类,要不然是异常的父类)
一旦发现try中的代码有问题就会被catch处理,后面的就不会执行。
finally,语句一定会执行,除非虚拟机关闭
用于释放资源
throw
throws
定义方法时需要把问题暴露出来让调用者去处理,那么久通过throws在方法上进行标识。
原则
如果功能内部可以将问题处理,用try
如果处理不了,交由调用者处理,用throws
区别
后续程序需要运行就用try
不需要运行就用throws
自定义异常会和throw配合使用
File类
文件和目录路径名的抽象表现形式。
成员方法
创建功能,删除功能,重命名功能,判断功能,基本获取功能,高级获取功能。
递归思想(慎用)
写的不好可能会让整个代码陷进去
IO流
分类
按照数据流向,分为输入流和输出流
按照类型分类,分为字节流和字符流
就用字节流,就是英文的话字节流完全没问题,中文会用到字符流。
常用基类
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer
InputStream的常用方法
close,关闭流
read,读数据
OutputStream的常用方法
close,关闭流
write,写数据
flush,刷新此输出流并且强行写出所有缓冲的输出字节
就是马上把当前缓冲流中的东西输出到文件
- 读数据和写数据
- 字节流:OutputStream,FileOutputStream;InputStream,FileInputStream;
- 字节缓冲输出流:BufferedOutputStream,BufferedInputStream;
- 字符输出流:OutputStreamWriter,FileWriter;InputStreamReader,FileReader;
- 字符缓冲流:BufferReader,BufferWriter(高效)
…
- 结尾是reader或者writer,就一定是字符流。 reader是输入流,就是看的; writer是输出流,就是写的;
- 其他的都是自己接,output的都是输出流,就是写的;input的都是输入流,就是读的
- 子类的后缀,就是父类。
// fileReader = new InputStreamReader(new FileInputStream(file),“UTF-8”);
修改编码集
其他流
主要是序列化流和反序列化流
package demo1;
import java.io.*;
import java.util.Date;
import java.util.Scanner;
public class TestDemo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名注册:");
String next = sc.next();
Student s1 = new Student(next);
register(next);
while (true){
System.out.println("------------------------------");
System.out.println("请输入登录用户名");
String sname = sc.next();
boolean login = login(sname);
if (login){
System.out.println("登录成功!欢迎:"+sname);
break;
}else {
System.out.println("用户名有误或不存在。");
}
}
}
public static void register(String s){
Student s1 = new Student(s);//!!!!!!!!!!!!竟然没有写参数!!!!愚蠢!!!!!!!!
//写进去
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("g:\\UserDao.txt");
oos = new ObjectOutputStream(fos);
oos.writeObject(s1);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static boolean login(String s){
//取出来
FileInputStream fis = null;
ObjectInputStream ois = null;
Student st = null;
try {
fis = new FileInputStream("g:\\UserDao.txt");
ois = new ObjectInputStream(fis);
st = (Student)ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (st != null){
if (s.equals(st.getName())){
return true;
}
}else {
return false;
}
return false;
}
}
properties集合(框架用)
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
package demo2;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class TestDemo2 {
public static void main(String[] args) throws IOException {
Properties ps = new Properties();
InputStream inputStream = new FileInputStream("g:\\mima.properties");
ps.load(inputStream);
String mi1 = ps.getProperty("mi");
String mi2 = ps.getProperty("ma");
String mi3 = ps.getProperty("dio");
System.out.println(mi1);
System.out.println(mi2);
System.out.println(mi3);
}
}
在File类中掌握创建文件的对象
IO流中主要掌握字节流,字符流,输入流输出流。
本文深入探讨了Java中的异常处理机制,包括运行时异常、空指针异常及IndexOutOfBoundsException等常见异常类型,并详细讲解了如何使用try...catch...finally进行异常处理。此外,还全面介绍了Java IO流的概念、分类及常用操作,如字节流和字符流的使用,以及File类的功能。
1466

被折叠的 条评论
为什么被折叠?



