A:異常的概述java
B:異常的分類程序員
Error面試
C:異常的繼承體系算法
* Throwable * Error * Exception * RuntimeException
A:JVM默認是如何處理異常的數據庫
B:案例演示windows
public class Demo1_Exception { public static void main(String[] args) { // demo1(); Demo d = new Demo(); int x = d.div(10, 0); //new ArithmeticException(/ by zero) 除數是0,違反算數運算法則 System.out.println(x); } private static void demo1() { int[] arr = {11,22,33,44,55}; // arr = null; //NullPointerException 空指針異常 System.out.println(arr[10]); //ArrayIndexOutOfBoundsException 數組索引越界異常 } } class Demo{ public int div(int a,int b) { return a / b; } }
A:異常處理的兩種方式數組
a:try…catch…finally服務器
B:try...catch處理異常的基本格式eclipse
C:案例演示jvm
public class Demo2_Exception { /* try:用來檢測異常 catch:用來捕獲異常的 finally:釋放資源 當經過trycatch將異常處理,程序繼續向下執行*/ public static void main(String[] args) { Demo2 d = new Demo2(); try { int x = d.div(10, 0); System.out.println(x); }catch(ArithmeticException a) { System.out.println("出錯了,除數爲0了"); } System.out.println("----------"); } } class Demo2{ public int div(int a,int b) { return a / b; } }
A:案例演示
public class Demo3_Exception { //安卓:客戶端開發,如何處理異常?try{}catch(Exception e) {} //JavaEE:服務端開發,通常都是底層開發,從底層向上拋 public static void main(String[] args) { // demo1(); int a = 10; int b = 0; int[] arr = {11,22,33,44,55}; //JdK7如何處理多個異常 try { System.out.println(a / b); System.out.println(arr[10]); } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println("出錯了"); } } private static void demo1() { int a = 10; int b = 0; int[] arr = {11,22,33,44,55}; try { System.out.println(a / b); System.out.println(arr[10]); arr = null; System.out.println(arr[0]); } catch (ArithmeticException e) { System.out.println("除數不能爲零"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("索引越界了"); } catch (Exception e) { //Exception e = new NullPointerException(); System.out.println("出錯了"); } System.out.println("over"); } }
A:編譯期異常和運行期異常的區別
編譯時異常
運行時異常
B:案例演示
import java.io.FileInputStream; public class Demo4_Exception { /* 編譯時異常:也叫健壯性異常,不處理編譯通不過。 運行時異常:就是程序員所犯的錯誤,須要回來修改代碼。 */ public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("xxx.txt"); } catch (Exception e) { } } }
A:Throwable的幾個常見方法
a:getMessage()
b:toString()
c:printStackTrace()
B:案例演示
public class Demo5_throwable { public static void main(String[] args) { try { System.out.println(1/0); } catch (Exception e) { //Exception e = new ArithmeticException(" / by zero"); // System.out.println(e.getMessage()); //獲取異常信息 System.out.println(e); //調用toString方法,打印異常類名和異常信息 e.printStackTrace(); //jvm默認就用這種方式處理異常 } } }
A:throws的方式處理異常
B:案例演示
public class Demo6_Exception {
//編譯時異常的拋出必須對其進行處理
//運行時異常的拋出能夠處理也能夠不處理
public static void main(String[] args) throws Exception { Person p = new Person(); p.setAge(-17); System.out.println(p.getAge()); } } class Person{ private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) throws RuntimeException { if(age > 0 && age <= 150) { this.age = age; }else { throw new RuntimeException("年齡非法"); // System.out.println("請回火星吧"); } } }
A:throw的概述
B:案例演示
C:throws和throw的區別
a:throws
b:throw
A:finally的特色
B:finally的做用
C:案例演示
public static void main(String[] args) { try { System.out.println(10/0); } catch (Exception e) { System.out.println("除數爲零了"); System.exit(0); //退出jvm虛擬機 return; } finally { System.out.println("看看我執行了嗎"); } }
A:面試題1
final,finally和finalize的區別
B:面試題2
public class Demo8_test { public static void main(String[] args) { Demo3 d = new Demo3(); System.out.println(d.method()); } } class Demo3 { public int method() { int x = 10; try { x = 20; System.out.println(1/0); return x; } catch (Exception e) { x = 30; return x; } finally { x = 40; } } }
A:爲何須要自定義異常
B:自定義異常概述
C:案例演示
class AgeOutOfBoundsException extends RuntimeException { public AgeOutOfBoundsException() { super(); } public AgeOutOfBoundsException(String message) { super(message); } }
public void setAge(int age) throws AgeOutOfBoundsException { if(age > 0 && age <= 150) { this.age = age; }else { throw new AgeOutOfBoundsException("年齡非法"); } }
A:異常注意事項
B:如何使用異常處理
區別:
鍵盤錄入一個int類型的整數,對其求二進制表現形式
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; public class Demo10_test { /** 分析 * 1.建立鍵盤錄入對象 * 2.將鍵盤錄入的結果存儲在String類型的字符串中,存儲int類型中,若是有不符合條件的直接報錯,沒法進行後續判斷 * 3.是鍵盤錄入的結果轉換成int類型的數據,是正確的仍是錯誤的。 * 4.正確的直接轉換 * 5.錯誤的要對應的判斷 * */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個整數:"); while(true) { String line = sc.nextLine(); //將鍵盤錄入的結果存儲在line中 try { int num = Integer.parseInt(line); //將字符串轉換爲整數 System.out.println(Integer.toBinaryString(num));//將整數轉換爲二進制 break; //跳出循環 } catch (Exception e) { try { new BigInteger(line); System.out.println("錄入錯誤,您錄入的是一個過大的整數,請從新輸入:"); } catch (Exception e2) { //Alt + Shift + z try { new BigDecimal(line); System.out.println("錄入錯誤,您錄入的是一個小數,請從新輸入:"); } catch (Exception e3) { System.out.println("錄入錯誤,您錄入的是非法字符,請從新輸入:"); } } } } // BigInteger big = new BigInteger("123"); } }
A:File類的概述
File更應該叫作一個路徑
B:構造方法
C:案例演示
import java.io.File; public class Demo1_File { public static void main(String[] args) { // demo1(); // demo2(); File parent = new File("C:\\Users\\albert\\Desktop\\JavaGuide-master\\Java相關"); String child = "ArrayList.md"; File file = new File(parent, child); System.out.println(file.exists()); System.out.println(parent.exists()); } private static void demo2() { String parent = "C:\\Users\\albert\\Desktop\\JavaGuide-master\\Java相關"; String child = "ArrayList.md"; File file = new File(parent,child); System.out.println(file.exists()); } private static void demo1() { File file = new File("C:\\Users\\albert\\Desktop\\JavaGuide-master\\Java相關"); System.out.println(file.exists()); File file2 = new File("xxx.txt"); System.out.println(file2.exists()); } }
A:建立功能
B:案例演示
注意事項:
import java.io.File; import java.io.IOException; public class Demo2_FileMethod { public static void main(String[] args) throws IOException { // demo1(); File dir1 = new File("aaa"); System.out.println(dir1.mkdir()); File dir2 = new File("bbb.txt"); System.out.println(dir2.mkdir()); File dir3 = new File("ccc\\ddd"); System.out.println(dir3.mkdirs()); //建立多級目錄 } private static void demo1() throws IOException { File file = new File("yyy.txt"); //建立文件 System.out.println(file.createNewFile()); //若是沒喲就建立,返回true File file2 = new File("zzz"); System.out.println(file2.createNewFile()); } }
A:重命名和刪除功能
B:重命名注意事項
C:刪除注意事項:
import java.io.File; public class Demo3_FileMethod { public static void main(String[] args) { // demo1(); File file1 = new File("yyy.txt"); System.out.println(file1.delete()); File file2 = new File("aaa"); System.out.println(file2.delete()); File file3 = new File("ccc"); //被刪除的文件必須爲空 System.out.println(file3.delete()); } private static void demo1() { File file1 = new File("ooo.txt"); File file2 = new File("D:\\xxx.txt"); System.out.println(file1.renameTo(file2)); } }
A:判斷功能
B:案例演示
import java.io.File; public class Demo4_FileMethod { public static void main(String[] args) { // demo1(); File file = new File("zzz"); file.setReadable(false); //windows認爲全部的文件都是可讀的 System.out.println(file.canRead()); file.setWritable(true); System.out.println(file.canWrite()); //windows系統能夠設置爲不可寫 File file2 = new File("lalala.txt"); System.out.println(file2.isHidden()); //判斷是不是隱藏文件 } private static void demo1() { File dir1 = new File("ccc"); System.out.println(dir1.isDirectory()); //判斷是不是文件夾 File dir2 = new File("zzz"); System.out.println(dir2.isDirectory()); System.out.println(dir1.isFile()); //判斷是不是文件 System.out.println(dir2.isFile()); } }
A:獲取功能
B:案例演示
import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; public class Demo5_FileMethod { public static void main(String[] args) { // demo1(); File dir = new File("E:\\Javawork\\JavaSE_File"); String[] arr = dir.list(); //僅爲了獲取文件名 for (String string : arr) { System.out.println(string); } File[] subFiles = dir.listFiles(); for (File file : subFiles) { //獲取文件對象 System.out.println(file); } } private static void demo1() { File file1 = new File("ccc.txt"); File file2 = new File("E:\\Javawork\\JavaSE_File\\ccc.txt"); // System.out.println(file1.getAbsolutePath()); //獲取絕對路徑 // System.out.println(file2.getAbsolutePath()); // System.out.println(file1.getPath()); //獲取構造方法中傳入的路徑 // System.out.println(file2.getPath()); // System.out.println(file1.getName()); // System.out.println(file2.getName()); //獲取文件或文件夾的名稱 // System.out.println(file1.length()); // System.out.println(file2.length()); Date d = new Date(file1.lastModified()); //文件的最後修改時間 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); System.out.println(sdf.format(d)); System.out.println(file2.lastModified()); } }
A:案例演示
import java.io.File; public class Demo6_test { /** A:案例演示 * 需求:判斷E盤目錄下是否有後綴名爲.jpg的文件,若是有,就輸出該文件名稱*/ public static void main(String[] args) { File dir = new File("E:\\"); /*String[] arr = dir.list(); //獲取E盤下全部文件及文件夾 for (String string : arr) { if(string.endsWith(".jpg")) { System.out.println(string); } }*/ File[] subFiles = dir.listFiles(); //獲取E盤下全部的文件和文件夾對象 for (File subFile : subFiles) { if(subFile.isFile() && subFile.getName().endsWith(".jpg")) { System.out.println(subFile); } } } }
A:文件名稱過濾器的概述
B:文件名稱過濾器的使用
C:源碼分析
File dir = new File("E:\\"); String[] arr = dir.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // System.out.println(dir); // System.out.println(name); File file = new File(dir, name); return file.isFile() && file.getName().endsWith(".jpg"); } }); for (String string : arr) { System.out.println(string); }