38 lines
		
	
	
		
			897 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			897 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| package haxe;
 | |
| 
 | |
| /**
 | |
| 	An exception containing arbitrary value.
 | |
| 
 | |
| 	This class is automatically used for throwing values, which don't extend `haxe.Exception`
 | |
| 	or native exception type.
 | |
| 	For example:
 | |
| 	```haxe
 | |
| 	throw "Terrible error";
 | |
| 	```
 | |
| 	will be compiled to
 | |
| 	```haxe
 | |
| 	throw new ValueException("Terrible error");
 | |
| 	```
 | |
| **/
 | |
| class ValueException extends Exception {
 | |
| 	/**
 | |
| 		Thrown value.
 | |
| 	**/
 | |
| 	public var value(default,null):Any;
 | |
| 
 | |
| 	public function new(value:Any, ?previous:Exception, ?native:Any):Void {
 | |
| 		super(#if js js.Syntax.code('String({0})', value) #else Std.string(value) #end, previous, native);
 | |
| 		this.value = value;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 		Extract an originally thrown value.
 | |
| 
 | |
| 		This method must return the same value on subsequent calls.
 | |
| 		Used internally for catching non-native exceptions.
 | |
| 		Do _not_ override unless you know what you are doing.
 | |
| 	**/
 | |
| 	override function unwrap():Any {
 | |
| 		return value;
 | |
| 	}
 | |
| } |