开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径

package huawei;

import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class ErrorRecords {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		Map<String,Integer> map=new LinkedHashMap<String,Integer>();
		String path;
		String fileName;
		int lineNum;
		String key;
		while(sc.hasNext())
		{
			path=sc.next();
			int id=path.lastIndexOf('\\');
			fileName=id<0?path:path.substring(id+1);
			lineNum=sc.nextInt();
			key=fileName+" "+lineNum;
			if(map.containsKey(key))
				map.put(key, map.get(key)+1);
			else
				map.put(key, 1);
		}
		sc.close();
		
		//记录错误信息
		List<Map.Entry<String,Integer>> lists=new LinkedList<Map.Entry<String,Integer>>(map.entrySet());
		Collections.sort(lists,new Comparator<Map.Entry<String,Integer>>()
		{
			public int compare(Entry<String, Integer> arg1,Entry<String, Integer> arg2)
			{
				return (arg2.getValue()-arg1.getValue())==0?(arg1.getValue()-arg2.getValue()):(arg2.getValue()-arg1.getValue());
			}
		});
		
		int count=0;
		for(Map.Entry<String, Integer> list:lists)
		{
			if(count<8)
			{
				String[] str=list.getKey().split(" ");
				String k=str[0].length()>16?str[0].substring(str[0].length()-16):str[0];
				String n=str[1];
				System.out.println(k+" "+n+" "+list.getValue());
			}
			else
				break;
			count++;
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的traceback模块来实现一个简单错误记录功能模块。该模块提供了一些函数来跟踪和记录Python程序的异常信息。 首先,我们可以在产生错误的地方调用`traceback.format_exc()`函数,该函数会返回一个字符串,包含当前错误的堆栈跟踪信息。我们可以将这个字符串记录下来。 然后,我们可以使用`sys.exc_info()`函数来获取当前的异常信息。该函数返回一个元组,包含当前异常的类型、错误对象和跟踪对象。我们可以从跟踪对象中获取错误发生的文件名和号信息。 接下来,我们可以将错误信息和堆栈跟踪信息写入一个文件或者输出到控制台。 下面是一个简单实现的示例代码: ```python import traceback import sys def log_error(): try: # 让程序产生一个错误 raise ValueError('示例错误') except: # 获取错误信息 error_type, error_value, error_traceback = sys.exc_info() # 获取错误发生的文件名和号信息 file_name = traceback.extract_tb(error_traceback)[-1].filename line_number = traceback.extract_tb(error_traceback)[-1].lineno # 将错误信息和堆栈跟踪信息记录下来 error_message = f'错误类型:{error_type}\n错误内容:{error_value}\n文件名:{file_name}\n号:{line_number}\n堆栈跟踪:\n{traceback.format_exc()}' with open('error_logs.txt', 'a') as f: f.write(error_message + '\n') # 或者直接输出到控制台 print(error_message) # 调用函数进错误记录 log_error() ``` 运以上代码后,程序会产生一个错误,并记录错误信息、错误文件名、号和堆栈跟踪信息到名为`error_logs.txt`的文件中。你可以根据实际情况修改日志记录的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值