2011-10-12 41 views

Trả lời

7

Hầu như không có gì:

package scala { 
    final class MatchError(obj: Any) extends RuntimeException 
    final class UninitializedError extends RuntimeException("uninitialized value") 
    final case class UninitializedFieldError (msg: String) extends RuntimeException(msg) 

    package util.regex { 
    class SyntaxError(e: String) extends RuntimeException(e) 
    } 

    package xml { 

    class BrokenException() extends java.lang.Exception 
    case class MalformedAttributeException(msg: String) extends RuntimeException(msg) 

    package dtd { 
     case class ValidationException(e: String) extends Exception(e) 
    } 

    package include { 
     class CircularIncludeException(message: String) extends XIncludeException 
     class UnavailableResourceException(message: String) extends XIncludeException(message) 
     class XIncludeException(message: String) extends Exception(message) 
    } 

    package parsing { 
     case class FatalError(msg: String) extends java.lang.RuntimeException(msg) 
    } 
    } 
} 

Phần còn lại đến từ Java, trong đó bao gồm khá nhiều tất cả các góc. Nó đặt ra câu hỏi về những phương pháp Scala này ném vào các nền tảng khác, phải không?

+0

Điều đó đưa ra một ý tưởng khá công bằng về việc dễ dàng ném các ngoại lệ tùy chỉnh của riêng bạn và thậm chí là các lỗi nếu nó hoạt động với Java. Chỉ cần tạo một lớp một dòng trong một đối tượng và sử dụng khi cần thiết. cuối cùng lớp MyException (arg: String) mở rộng RuntimeException() hoặc như được thấy trong FatalError với java.lang.RuntimeException (msg). Đẹp một Sobral. –

2

Các NotImplementedException hiện đang được xem xét cho Scala 2.10, có lẽ. Xem trang này thread.

+1

'UnsupportedOperationException' tất nhiên không được xem xét cho Scala 2.10. Nó đã là một phần của thư viện Java trong một thời gian dài. Chủ đề là về việc thêm một phương thức triệu tập để ném nó vào Predef. –

+1

Trước hết, UnsupportedOperationException và NotImplementedException có nghĩa là những thứ hoàn toàn khác nhau và cả hai đều cần thiết (tôi thường sử dụng cả hai trong số chúng chủ động trong các dự án C# của tôi). Và câu hỏi đặt ra là sử dụng ngày hôm nay, trong Scala 2.9.1? Tôi sử dụng để định nghĩa một lớp và sau đó triển khai thực hiện phương thức theo phương thức, sử dụng "ném mới NotImplementedException()" khi chưa triển khai thực hiện các phương thức và biên dịch dự án nhiều lần trước khi tôi triển khai mọi thứ. Nhưng trong Scala nó có vẻ như tôi phải thực hiện tất cả các chức năng bằng cách trả về một số dữ liệu giả - điều này có thể gây ra lỗi và chỉ gây phiền nhiễu. – Ivan

+0

Kể từ 2,10, '???' đã được thêm vào 'Predef'. Bây giờ bạn có thể viết mã như 'class Thing {def getThing = ??? } '. Việc gọi 'getThing' sẽ tăng' scala.NotImplementedError' với thông báo "thiếu triển khai". – afternoon

2

Bạn chỉ có thể sử dụng mọi thứ mặc định đã tồn tại trong Java. Scala không thực sự thêm bất cứ điều gì vào các ngoại lệ tiêu chuẩn trong Java.

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