2011-12-12 19 views

Trả lời

6

404s có thể được xử lý với sự giúp đỡ của các phương pháp not_found như ví dụ:

not_found do 
    'Site does not exist.' 
end 

500s có thể được xử lý bằng cách gọi phương pháp lỗi với một khối, ví dụ:

error do 
    "Application error. Pls try later." 
end 

Các chi tiết của bạn có thể truy cập lỗi qua số sinatra.error trong request.env như sau:

error do 
    'An error occured: ' + request.env['sinatra.error'].message 
end 
+0

làm cách nào để thực hiện truy xuất ngoại lệ nếu đó là 500, ý tôi là điều gì đã xảy ra? cảm ơn. – Jane

+0

@Jane xem câu trả lời cập nhật của tôi – maprihoda

4

Tôi gặp khó khăn khi làm việc này trong hộp trong môi trường dev của mình - để làm cho nó hoạt động, tôi phải đặt show_exceptions thành false trong cấu hình sinatra của mình.

class BaseApp < Sinatra::Base 

    configure { set :show_exceptions, false } 

    error do |err| 
    raise "Error: #{err}" 
    end 

end 

Thiết lập này, khi thiết lập là true, cho phép các trang lỗi cho thấy vết lùi và thông tin môi trường khi một ngoại lệ unhanded xảy ra, nhưng tôi chỉ có thể lỗi tùy chỉnh lửa bằng cách tắt nó.

+1

Đây là câu trả lời đúng. Nó không hoạt động nếu không có dòng cấu hình. – pmontrasio

+1

Trên thực tế, cả hai ': show_exceptions' và': raise_errors' phải được tắt (tức là, được đặt thành false) để chặn khối chung (tức là, không có lớp ngoại lệ hoặc mã trạng thái) được thực thi và trả về. –

+0

Lưu ý rằng 'err' trong ví dụ là thông điệp của ngoại lệ, cũng có thể thu được bằng' env ['sinatra.error']. –

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