30/09/2018, 19:06

hàm bẫy lỗi(try_catch) trong java không chạy

mấy bạn cho mình hỏi hàm try_catch trong java chạy như nào vậy? code dưới là code giải phương trình bậc 2! mình thử nhập hệ số a=0 rồi, nhưng hàm catch không thấy báo lỗi số chia bằng 0:

import static java.lang.Math.sqrt;
import java.util.Scanner;

public class try_catch_finally {
    public static void main(String[] args) {
        float a,b,c,delta;
        System.out.println("
 Nhap vao he so cua phuong trinh:");
        Scanner nhapTT= new Scanner(System.in);
         a = nhapTT.nextFloat();
         b =  nhapTT.nextFloat();
         c =    nhapTT.nextFloat();
        
         delta=(b*b)-(4*a*c);
         if(delta==0){
             System.out.println("
 Phuong trinh co nghiem kep la:" + (-b/a));
         }
         if(delta!=0){
             if(delta<0)
                 System.out.println("
 Phuong tirnh vo nghiem:");
             if(delta>0&&a!=0){
                 System.out.println("
 Phuong trinh co 2 nghiem phan biet:");
                 System.out.println("
 x1 = "+ ((-b)-sqrt(delta))/(2*a));
                 System.out.println("
 x2 = "+ ((-b)+sqrt(delta))/(2*a));
                 
             }
            else{
             System.out.println("
 Loi nhap thong tin!");
         }
         }
         try{
          System.out.println(b/a + "
 ");
         }
         catch(Exception e1){
             System.out.println("
 phat sinh loi!!!");
             System.out.println("
 Ten loi la:"+ e1);
             
         }

... viết 21:06 ngày 30/09/2018

try{
System.out.println(b/a + "\n ");
}

Bạn chỉ

try

có 1 dòng in kết quả như thế thì làm sao nó bắt lỗi đc.
Bạn cần kiểm tra đoạn code nào thì enclose đoạn code đó trong try.

Leng Keng viết 21:21 ngày 30/09/2018

sửa như này được không bạn:

 try{
          float f = b/a;
         }```
theo mình hiểu là mình đưa vào try một đoạn  code để kiểm tra lỗi, nếu có lỗi sẽ trả kết quả về hàm ```catch```. đúng không bạn ?
Leng Keng viết 21:09 ngày 30/09/2018

như đoạn code này lại đưa ra kết quả đúng
``int a=5;
int b=0;
if(b==0){
System.out.println(" Loi chia cho so 0;");

    }
    else{
        System.out.println("\n a/b=" + a / b);
    }
    try{
        System.out.println("\n a/b=" + a/b);
    }
    catch(Exception error){
        System.out.println("\n co loi j do xay ra:");
        System.out.println("\n ten loi la :" + error);
    }
    finally{
        System.out.println("\n thong bao mac dinh:");
    }```
Hữu Nghĩa viết 21:14 ngày 30/09/2018
  1. Câu lệnh nằm trong khối try catch nó mới bắt lỗi
  2. Bạn đưa câu lệnh System.out.println() vào thì nó in ra console chứ nó có xử lí dữ liệu gì đâu mà có lỗi.
  3. Ở phần cmt thứ nhất của bạn, câu lênh System.out.println() được đưa dữ liệu b/a vào nó sẽ xử lí, ở đây a không thể bằng 0 vì như thế sẽ là pt bậc 1, vì vậy nó không chia cho số 0 nên không gây lỗi. Ở phần cmt thứ 4 của bạn thì câu lệnh System.out.println() bị bắt lỗi vì nó chia cho số 0.

Cách sửa là cần xử lí cái nào thì cho nó vào try catch
// bạn cần đọc lại tài liệu phần try catch để nắm bắt rõ vấn đề hơn.

Leng Keng viết 21:11 ngày 30/09/2018

cám ơn bạn,để mình coi lại tài liệu xử lí tiếp .!

Bài liên quan
0