optimize: 所有JSON解析失败的异常捕获及处理

pull/445/head
王良 2025-01-22 13:17:52 +08:00
parent 3ae6282870
commit 2a7550368b
8 changed files with 74 additions and 19 deletions

View File

@ -11,8 +11,14 @@ async function startup () {
const configPath = './user_config.json5'
if (fs.existsSync(configPath)) {
const file = fs.readFileSync(configPath)
const userConfig = jsonApi.parse(file.toString())
console.info('读取 user_config.json5 成功:', configPath)
let userConfig
try {
userConfig = jsonApi.parse(file.toString())
console.info(`读取和解析 user_config.json5 成功:${configPath}`)
} catch (e) {
console.error(`读取或解析 user_config.json5 失败: ${configPath}, error:`, e)
userConfig = {}
}
DevSidecar.api.config.set(userConfig)
}

View File

@ -15,7 +15,13 @@ if (process.argv && process.argv.length > 3) {
const configJson = fs.readFileSync(configPath)
log.info('读取 running.json by core 成功:', configPath)
const config = jsonApi.parse(configJson.toString())
let config
try {
config = jsonApi.parse(configJson.toString())
} catch (e) {
log.error(`running.json 文件内容格式不正确,文件路径:${configPath},文件内容: ${configJson.toString()}, error:`, e)
config = {}
}
// const scriptDir = '../../gui/extra/scripts/'
// config.setting.script.defaultDir = path.join(__dirname, scriptDir)
// const pacFilePath = '../../gui/extra/pac/pac.txt'

View File

@ -146,7 +146,12 @@ const configApi = {
}
},
readRemoteConfig (suffix = '') {
return jsonApi.parse(configApi.readRemoteConfigStr(suffix))
try {
return jsonApi.parse(configApi.readRemoteConfigStr(suffix))
} catch (e) {
log.error(`读取远程配置失败suffix: ${suffix}`, e)
return {}
}
},
readRemoteConfigStr (suffix = '') {
if (get().app.remoteConfig.enabled !== true) {
@ -223,7 +228,12 @@ const configApi = {
const file = fs.readFileSync(configPath)
log.info('读取 config.json 成功:', configPath)
const fileStr = file.toString()
userConfig = fileStr && fileStr.length > 2 ? jsonApi.parse(fileStr) : {}
try {
userConfig = jsonApi.parse(fileStr)
} catch (e) {
log.error(`config.json 文件内容格式不正确,文件路径:${configPath},文件内容: ${fileStr}, error:`, e)
userConfig = {}
}
}
const config = configApi.set(userConfig)

View File

@ -479,7 +479,12 @@ function _getConfig () {
return {}
}
return jsonApi.parse(fs.readFileSync(configFilePath))
try {
return jsonApi.parse(fs.readFileSync(configFilePath))
} catch (e) {
console.error('读取配置文件失败:', configFilePath, e)
return {}
}
}
function _getRemoteSavePath (suffix = '') {
@ -516,7 +521,12 @@ function _readRemoteConfigStr (suffix = '') {
}
function _readRemoteConfig (suffix = '') {
return jsonApi.parse(_readRemoteConfigStr(suffix))
try {
return jsonApi.parse(_readRemoteConfigStr(suffix))
} catch (e) {
console.error(`读取远程配置失败suffix: ${suffix}`, e)
return {}
}
}
function _getConfigFromFiles () {

View File

@ -100,8 +100,12 @@ const localApi = {
},
save (setting = {}) {
const settingPath = _getSettingsPath()
fs.writeFileSync(settingPath, jsonApi.stringify(setting))
log.info('保存 setting.json 配置文件成功:', settingPath)
try {
fs.writeFileSync(settingPath, jsonApi.stringify(setting))
log.info('保存 setting.json 配置文件成功:', settingPath)
} catch (e) {
log.error('保存 setting.json 配置文件失败:', settingPath, e)
}
},
},
/**

View File

@ -7,7 +7,13 @@ const log = require('@docmirror/mitmproxy/src/utils/util.log') // 当前脚本
const configPath = process.argv[2]
const configJson = fs.readFileSync(configPath)
log.info('读取 running.json by gui bridge 成功:', configPath)
const config = jsonApi.parse(configJson.toString())
let config
try {
config = jsonApi.parse(configJson.toString())
} catch (e) {
log.error(`running.json 文件内容格式不正确,文件路径:${configPath},文件内容: ${configJson.toString()}, error:`, e)
config = {}
}
// const scriptDir = '../extra/scripts/'
// config.setting.script.defaultDir = path.join(__dirname, scriptDir)
// const pacFilePath = '../extra/pac/pac.txt'

View File

@ -5,11 +5,19 @@ if (JSON5.default) {
}
module.exports = {
parse (str) {
parse (str, defaultValue) {
if (str == null || str.length < 2) {
return {}
return defaultValue || {}
}
if (defaultValue != null) {
try {
return JSON5.parse(str)
} catch {
return defaultValue
}
} else {
return JSON5.parse(str)
}
return JSON5.parse(str)
},
stringify (obj) {
return JSON.stringify(obj, null, '\t')

View File

@ -62,12 +62,17 @@ function _loadFromFile (defaultConfig) {
const file = fs.readFileSync(configPath)
log.info('读取 automaticCompatibleConfig.json 成功:', configPath)
const fileStr = file.toString()
config = fileStr && fileStr.length > 2 ? jsonApi.parse(fileStr) : defaultConfig
if (config.connect == null) {
config.connect = defaultConfig.connect
}
if (config.request == null) {
config.request = defaultConfig.request
try {
config = jsonApi.parse(fileStr)
if (config.connect == null) {
config.connect = defaultConfig.connect
}
if (config.request == null) {
config.request = defaultConfig.request
}
} catch (e) {
log.error('解析 automaticCompatibleConfig.json 成功:', configPath, ', error:', e)
return defaultConfig
}
}