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;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |