2010-04-23 59 views
6

Tôi đã đọc về xử lý ngoại lệ trên Apple developer docs, nhưng tôi đã tự hỏi tại sao ngoại lệ của các hoạt động C chuẩn không bị bắt?Xử lý ngoại lệ trong Obj-C

Ví dụ: mã bên dưới vẫn treo ứng dụng, mà không bắt div bằng 0. Liệu @ try/@ catch block có chỉ bắt được mã Obj-C không?

@try { 
    int i = 10/0; 
} 
@catch (NSException * e) { 
    NSLog(@"Div by zero!"); 
} 
@finally { 
    // Nothing... 
} 

Trả lời

3

Chia cho số không phải là ngoại lệ loại NSException. Trong thực tế, nó không thực sự là một "ngoại lệ" về ngôn ngữ lập trình. C chính nó không có bất kỳ trường hợp ngoại lệ trong cùng một cách mà C + +, Java, vv, làm. Khi phân chia bằng 0 trong C xảy ra, một "ngoại lệ" được "ném" bởi bộ vi xử lý và việc xử lý cho lỗi đó xảy ra ở mức thấp hơn nhiều.