2012-05-23 34 views
30

Có điều gì đó dọc theo dòng của python 'pass' trong javascript không?javascript pass

tôi muốn làm tương đương với javascript của:

try: 
    # Something that throws exception 
catch: 
    pass 
+5

Niềng răng trống không thực hiện thủ thuật?Nhân tiện, âm thầm ăn ngoại lệ hầu như luôn là điều sai trái. –

+1

[Try/Catch reference] (https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch) – Jason

+0

Đến điểm của Adam, tôi có câu trả lời mới cho câu hỏi cũ này điều chỉnh cho Python xử lý lỗi sắc thái dưới đây: http://stackoverflow.com/a/28288015/541136 –

Trả lời

38

pass is a no-op in Python. Bạn cần nó cho khối trống rỗng, vì

try: 
    # Something that throws exception 
catch: 

# continue other stuff 

is a syntax error. Trong JavaScript, bạn chỉ có thể sử dụng khối trống catch.

try { 
    // Something that throws exception 
} 
catch (e) {} 
31

Có, và ở đây nó là:

 

Đúng vậy, không có gì ở tất cả:

try { 
    somethingThatThrowsAnException(); 
} catch (e) { 
} 
3

tôi muốn làm tương đương với javascript của:

try: 
    # Something that throws exception 
catch: 
    pass 

Python không có thử/nắm bắt. Nó đã thử/ngoại trừ. Vì vậy, thay thế catch với except, chúng tôi sẽ có điều này:

try { 
    //  throw any exception 
} catch(err) {} 

Các khối mã rỗng sau khi nắm bắt được tương đương với Python của pass.

Best Practices

Tuy nhiên, người ta có thể giải thích câu hỏi này một chút khác nhau. Giả sử bạn muốn chấp nhận các ngữ nghĩa giống như một khối try/except Python. Xử lý ngoại lệ của Python có chút sắc thái hơn và cho phép bạn chỉ định lỗi nào cần nắm bắt.

Thực tế, đây được xem là phương pháp hay nhất để chỉ bắt các loại lỗi cụ thể.

Vì vậy, một phiên bản thực hành tốt nhất cho Python sẽ là, kể từ khi bạn muốn chỉ bắt ngoại lệ bạn đang chuẩn bị để xử lý, và tránh các lỗi ẩn:

try: 
    raise TypeError 
except TypeError as err: 
    pass 

Bạn có lẽ nên phân lớp các loại lỗi thích hợp, tiêu chuẩn Javascript không có một hệ thống phân cấp ngoại lệ rất phong phú. Tôi đã chọn TypeError vì nó có cùng một ngữ nghĩa và ngữ nghĩa tương tự với số TypeError của Python.

Để tuân theo cùng ngữ nghĩa cho điều này trong Javascript, trước tiên chúng tôi have to catch all errors và do đó chúng tôi cần luồng điều khiển điều chỉnh cho điều đó. Vì vậy, chúng tôi cần xác định xem lỗi có phải là loại lỗi chúng tôi muốn pass có điều kiện không. Việc thiếu luồng kiểm soát khác là điều làm im lặng TypeError. Và với mã này, về mặt lý thuyết, tất cả các loại lỗi khác sẽ bong bóng lên bề mặt và được khắc phục hoặc ít nhất được xác định để xử lý lỗi bổ sung:

try {         // try: 
    throw TypeError()     //  raise ValueError 
} catch(err) {      // # this code block same behavior as 
    if (!(err instanceof TypeError)) { // except ValueError as err: 
    throw err       //  pass 
    } 
}      

Các vấn đề liên quan