27 lines
		
	
	
		
			717 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			27 lines
		
	
	
		
			717 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package haxe.exceptions;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									An exception that carry position information of a place where it was created.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								class PosException extends Exception {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Position where this exception was created.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public final posInfos:PosInfos;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function new(message:String, ?previous:Exception, ?pos:PosInfos):Void {
							 | 
						||
| 
								 | 
							
										super(message, previous);
							 | 
						||
| 
								 | 
							
										if (pos == null) {
							 | 
						||
| 
								 | 
							
											posInfos = { fileName:'(unknown)', lineNumber:0, className:'(unknown)', methodName:'(unknown)' }
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											posInfos = pos;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Returns exception message.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									override function toString():String {
							 | 
						||
| 
								 | 
							
										return '${super.toString()} in ${posInfos.className}.${posInfos.methodName} at ${posInfos.fileName}:${posInfos.lineNumber}';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |