Đối với chương trình Scala đầu tiên của tôi, tôi đang cố viết một tiện ích nhỏ sẽ chuyển đổi một tệp XML từ lược đồ này sang lược đồ khác.Cách trả lại Không có trong Scala
tôi bắt đầu viết một phương pháp mà sẽ cung cấp cho tôi những nội dung file:
def loadFile(filename: String, encoding: String = "utf-8"):Option[String] = {
try
{
val source = scala.io.Source.fromFile(filename, encoding)
val contents = source.mkString
source.close()
return Some(contents)
}
catch
{
return None
}
}
Nhưng nó không biên dịch. Tôi nhận lại "giá trị áp dụng không phải là thành viên của Không có gì" và "giá trị isDefinedAt không phải là thành viên của Không có gì" dưới dạng thông báo lỗi từ dòng return None
.
Tất cả các ví dụ tôi có thể tìm thấy trả lại tùy chọn Sử dụng kết hợp, nhưng điều này không có ý nghĩa ở đây. Tôi chỉ muốn không thất bại nếu tôi không thể đọc tập tin vì lý do nào đó.
Tôi nên làm gì trong trường hợp này? Có một mô hình để làm điều này ở Scala?
Nhưng tôi đồng ý với + Nicolas Rinaudo về phong cách - cho phép người gọi quyết định cách xử lý lỗi, bất kể nó là gì.Đôi khi, mặc dù, bạn cần phải xử lý một số công cụ trên bên gọi (như làm sạch bộ nhớ cache hoặc bất cứ điều gì để làm sạch), trước khi gửi lỗi trở lại cho người gọi. – ses