nc-photos/np_platform_lock/ios/Classes/Util.swift

36 lines
832 B
Swift
Raw Normal View History

2023-08-29 15:37:13 +02:00
import Foundation
class AppError: Error {
init(_ message: String? = nil, stackTrace: [String] = Thread.callStackSymbols) {
self.message_ = message
self.stackTrace = stackTrace.joined(separator: "\n")
}
var description: String {
return "\(message_ ?? "") (throw: \(String(describing: self))\nStack trace:\n\(stackTrace)"
}
var message: String {
return message_ == nil ? String(describing: self) : message_!
}
let stackTrace: String
private let message_: String?
}
class NilError: AppError {
}
extension Optional {
func unwrap(
_ errorBuilder: (() -> Error)? = nil,
file: String = #fileID,
line: Int = #line
) throws -> Wrapped {
guard let value = self else {
throw errorBuilder?() ?? NilError("\(type(of: self)) is nil in \(file):\(line)")
}
return value
}
}