blob: a888b6b6b33c95be985195c633dbe9cc0917a7d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
---
title: FileException
slug: Web/API/FileException
translation_of: Web/API/FileException
---
<div>{{APIRef("File System API")}} {{Non-standard_header}}</div>
<p>在 <a href="/en-US/docs/DOM/File_API/File_System_API">文件系统 API</a> 中, <code>FileException </code>表示错误条件,你可能在使用同步 API 访问文件系统时遇到。它扩展了 FileException 接口,在 <a href="http://dev.w3.org/2009/dap/file-system/pub/FileSystem/#bib-FILE-WRITER">File Writer</a> 中描述,并添加了几个新的错误代码。</p>
<h2 id="基本概念">基本概念</h2>
<p>同步 API 没有错误回调,这使其难以捕获错误。和这个 API 一起使用 <a href="/en-US/docs/DOM/Worker">WebWorkers</a> 的额外复杂性,使得调试更具有挑战性。为了使事情简化,将你的工作器代码包在 try/catch 里面。当错误发生时,使用 <code>postMessage()</code> 将它们转发给主应用,像这样:</p>
<pre class="brush: js">function onError(e) {
postMessage('ERROR:' + e.toString());
}
try {
//Error is thrown if "log.txt" already exists.
var fileEntry = fs.root.getFile('log.txt', {create: true, exclusive:true}0;
} catch (e) {
onErrror(e);
} </pre>
<p>示例代码取自 <a href="http://www.html5rocks.com/en/tutorials/file/filesystem-sync/">HTML5Rocks</a></p>
<h2 id="属性">属性</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Attribute</th>
<th scope="col">Type</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a name="attr_code"><code>code</code></a></td>
<td><code>unsigned short</code></td>
<td>用于该条件的最合适的错误代码。</td>
</tr>
</tbody>
</table>
<h2 id="常量">常量</h2>
<p>{{Note("不要依赖于常量的数值,它可能随着规范改动而改动。使用常量名称来代替。")}}</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">常量</th>
<th scope="col">值</th>
<th scope="col">描述</th>
</tr>
<tr>
<td><code><a name="NON_TRANSIENT_ERR">ENCODING_ERR</a></code></td>
<td>5</td>
<td>URL 格式错误。确保 URL 是完整和有效的。</td>
</tr>
<tr>
<td><code><a name="NON_TRANSIENT_ERR">INVALID_MODIFICATION_ERR</a></code></td>
<td>9</td>
<td>请求的改动是不允许的。无效改动包括将目录移动到它的子目录中,或者将文件移动到它的父目录中,而没有修改它的名称。</td>
</tr>
<tr>
<td><code><a name="CONSTRAINT_ERR">INVALID_STATE_ERR</a></code></td>
<td>7</td>
<td>在接口对象的当前状态上,不能执行操作。例如,缓存在接口对象中的状态,自从上次从磁盘读取之后发生改变。</td>
</tr>
<tr>
<td><code><a name="VER_ERR">NO_MODIFICATION_ALLOWED_ERR</a></code></td>
<td>6</td>
<td>底层文件系统的状态阻止任何文件或者目录的写入。</td>
</tr>
<tr>
<td><code><a name="NOT_FOUND_ERR">NOT_FOUND_ERR</a></code></td>
<td>1</td>
<td>在操作执行时,所需文件或者目录无法找到。例如,打开了不存在的文件。</td>
</tr>
</thead>
<tbody>
<tr>
<td><code><a name="NON_TRANSIENT_ERR">NOT_READABLE_ERR</a></code></td>
<td>4</td>
<td>
<p>文件或者目录不能读取,通常由于权限问题,出现在获取文件引用之后(例如,文件或者目录当前由另一个应用锁住)。</p>
</td>
</tr>
<tr>
<td><code><a name="TIMEOUT_ERR">PATH_EXISTS_ERR</a></code></td>
<td>12</td>
<td>路径相同的文件或者目录已存在。</td>
</tr>
<tr>
<td><code><a name="QUOTA_ERR">QUOTA_EXCEEDED_ERR</a></code></td>
<td>10</td>
<td>
<p>没有足够的剩余空间,或者存储器配额已达到,并且用户拒绝向数据库提供更多空间。</p>
</td>
</tr>
<tr>
<td><code><a name="SECURITY_ERR">SECURITY_ERR</a></code></td>
<td>2</td>
<td>
<p>拒绝文件访问,由于下列原因之一:</p>
<ul>
<li>在 Web 应用中访问文件是不安全的。</li>
<li>文件资源上有过多调用。</li>
<li>其它未规定的安全错误代码或情况。</li>
</ul>
</td>
</tr>
<tr>
<td><code><a name="READ_ONLY_ERR">TYPE_MISMATCH_ERR</a></code></td>
<td>11</td>
<td>用户尝试检索文件或者目录,但是找到的条目类型错误。例如,应用正在访问 DirectoryEntry ,当用户请求 FileEntry 的时候。</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">浏览器兼容性</h2>
<div>{{CompatibilityTable}}</div>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari (WebKit)</th>
</tr>
<tr>
<td>Basic support</td>
<td>13{{property_prefix("webkit")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Chrome for Android</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Phone</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{CompatNo}}</td>
<td>0.16 {{property_prefix("webkit")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
</tr>
</tbody>
</table>
</div>
<h2 id="另见">另见</h2>
<p>规范:{{spec("http://dev.w3.org/2009/dap/file-system/pub/FileSystem/", "文件 API:目录和系统规范", "WD")}}</p>
<p>参考:<a href="/en-US/docs/DOM/File_API/File_System_API" title="DOM/File_API/File_System_API">文件系统 API</a></p>
<p>简介:<a href="/en-US/docs/DOM/File_APIs/Filesystem/Basic_Concepts_About_the_Filesystem_API" title="DOM/File_APIs/Filesystem/Basic_Concepts_About_the_Filesystem_API">文件系统 API 的基本概念</a></p>
|